Haskell中的类型和定义

Haskell中的类型和定义,haskell,Haskell,以上是我遇到的问题。它要求我给出一个类型并定义一个非中缀函数 所以我的方法是使用模式匹配 这个想法是取两个布尔值,然后遍历模式 xor :: bool -> bool -> bool xor True True == False xor True False == True xor False True == True xor False False == False 我得到一个编译错误 Parse error: naked expression at top level

以上是我遇到的问题。它要求我给出一个类型并定义一个非中缀函数

所以我的方法是使用模式匹配

这个想法是取两个布尔值,然后遍历模式

 xor :: bool -> bool -> bool
 xor True True == False
 xor True False == True
 xor False True == True
 xor False False == False
我得到一个编译错误

Parse error: naked expression at top level
Perhaps you intended to use TemplateHaskell
有人能告诉我我在这里做错了什么,以及我如何修复它吗


谢谢。

< P>请考虑阅读基本的Haskell教程-类似。

类型是用大写字母写的,
==
运算符不是赋值,而是测试是否相等

xor :: Bool -> Bool -> Bool
xor True True = False
xor True False = True
xor False True = True
xor False False = False
还请注意,这可以简化为

xor x y = x /= y
毕竟,它只是检查您传入的两个值是否不同

甚至更多

xor = (/=)
这种样式称为无点,这意味着如果类型签名清晰,则不需要任何参数(出于历史/数学原因,有时参数被称为点)

顺便说一下,如果您想知道什么是
TemplateHaskell
,它是GHC的编译器扩展,允许您编写代码,在编译时创建haskell代码,然后再进行类型检查和编译,我认为它是类型安全的元编程