gpt4 book ai didi

Haskell:模式匹配、标识符和运算符

转载 作者:行者123 更新时间:2023-12-02 10:18:49 25 4
gpt4 key购买 nike

我正在尝试使用 Haskell 中的模式匹配来定义 xor:

(xor) :: Bool -> Bool -> Bool
True xor False = True
False xor True = True
True xor True = False
False xor False = False

但是这会给出错误:

Invalid type signature: (xor) :: Bool -> Bool -> Bool
Should be of form <variable> :: <type>

我很困惑为什么会抛出这个错误。另外,如果我将 xor 替换为 && 之类的内容,则脚本加载正常。

最佳答案

只有运算符应包含在类型签名的括号中,例如

(&&) :: Bool -> Bool -> Bool

普通函数不应编写,

xor :: Bool -> Bool -> Bool

并且在定义方程中,您必须将其括在反引号中,

True `xor` True = False

如果你想使用中缀表示法来定义它。没有反引号,您可以使用前缀表示法来定义它,

xor True False = True

但是请注意,

  • xorBits 类中的函数,因此将其用于 Bool 可能会出乎意料
  • 异或 ≡ (/=)

关于Haskell:模式匹配、标识符和运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837068/

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