gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:49:02 24 4
gpt4 key购买 nike

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

-- 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com