我可以基于Bool函数调用重载Haskell函数吗?

时间:2014-03-22 09:41:15

标签: haskell functional-programming

我不确定如何解释这一点,所以我只是举个例子:

-- 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,而不是一个字符串所以它将是错误的参数而且isAlpha在Char not not String上运行无论如何。但我只是想描绘我正在寻找的概念,所以我希望能够实现。

1 个答案:

答案 0 :(得分:8)

您在模式匹配(仅限模式匹配)发生的地方使用isAlpha。 改为使用警卫:

 row a | isAlpha a = someFunction
       | otherwise = someOtherFunction