手动定义布尔连接

时间:2011-08-28 10:17:49

标签: haskell boolean operators pattern-matching

在功能编程基础知识的Erik Meijer的chapter 4中,他基本上写道:

True  &&& x | x == True  = True
            | x == False = False

这不是不必要的冗长吗?我不能写:

True  &&& x = x

甚至:

(&&&) True  = id

(&&&) False = const False          

顺便问一下,为什么我不能写以下内容?

(True  &&&) = id

(False &&&) = const False          

ghci回应:

Parse error in pattern: True &&&

1 个答案:

答案 0 :(得分:12)

是的,你定义它的方式更好。来自序曲:

True  && x = x
False && _ = False

您只能在表达式中使用节,而不能在模式中使用。没有深层原因可以在模式中允许(True &&)。但是,我认为这不是一件值得注意的事情,这是一件非常罕见的事情。