我不确定如何很好地解释这一点,所以我只提供一个示例:

-- Create a list of ints if the string contains no numbers
row :: String -> [Maybe Int]
row (isAlpha row) = [ Just $ ord c | c <- row ]
row _ = [Nothing]

当我尝试在GHCi中加载带有此模块的模块时,我得到:
Parse error in pattern: isAlpha

有没有办法做到这一点?还是我必须在if..else中做所有事情?

Ninja编辑:显然,这不是一个真实的示例。我试图通过一个简单的例子来推断我的行为,但是事后看来,这显然是没有意义的,因为isAlpha会返回Bool而不是String,所以它是错误的参数,而且isAlpha仍然可以对Char而不是String进行操作。但是我只是想描绘我一直在寻找的概念,所以我希望这能够实现。

最佳答案

您在发生模式匹配(仅模式匹配)的地方使用isAlpha
使用 guard 代替:

 row a | isAlpha a = someFunction
       | otherwise = someOtherFunction

关于haskell - 我可以基于 bool 函数调用重载Haskell函数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22575900/

10-08 23:32