我不确定如何解释这一点,所以我只是举个例子:
-- 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上运行无论如何。但我只是想描绘我正在寻找的概念,所以我希望能够实现。
答案 0 :(得分:8)
您在模式匹配(仅限模式匹配)发生的地方使用isAlpha
。
改为使用警卫:
row a | isAlpha a = someFunction
| otherwise = someOtherFunction