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

标签 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 中完成所有操作?

忍者编辑:这显然不是一个真实的例子。我试图用一个简单的例子来推断我所追求的行为,但事后看来,这显然是没有意义的,因为 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/

相关文章:

debugging - haskell -- -ddump-simpl 是获得具体类型的最佳方法吗?

haskell - 'yesod devel' 期间构建失败

Haskell 类依赖

haskell - 我们可以用 Alternative 做什么,但不能用 Monoid 做什么?

Javascript 函数加载(通过引用?)

java - 如果实际参数是 lambda,则在重载方法之间进行选择

java - 以功能方式从列表创建对列表

javascript - 简化分页页面列表的生成

list - Haskell-将两个列表放入一个元组列表中

functional-programming - 函数式编程 : Best Platform/Environment