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

Sam*_*ett 5 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]
Run Code Online (Sandbox Code Playgroud)

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

Parse error in pattern: isAlpha
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?或者我必须在if..else中完成所有操作?

Ninja Edit:显然,这不是一个真实的例子.我试图通过一个简单的例子来推断我所追求的行为,但事后看来这显然没有意义,因为isAlpha会返回一个Bool,而不是一个字符串所以它将是错误的参数而isAlpha无论如何都在Char not String上工作.但我只是想描绘我正在寻找的概念,所以我希望能够实现.

小智 8

您正在使用isAlpha模式匹配(和仅模式匹配)的地方.请使用警卫:

 row a | isAlpha a = someFunction
       | otherwise = someOtherFunction
Run Code Online (Sandbox Code Playgroud)