手动定义布尔连接
在 Erik Meijer 关于函数式编程基础知识的第 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 &&&
In chapter 4 of Erik Meijer on Functional Programming Fundamentals, he essentially writes:
True &&& x | x == True = True
| x == False = False
Isn't this unnecessarily verbose? Couldn't I just write:
True &&& x = x
or even:
(&&&) True = id
(&&&) False = const False
By the way, how come I cannot write the following?
(True &&&) = id
(False &&&) = const False
ghci responds with:
Parse error in pattern: True &&&
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,你定义它的方式更好。前奏:
您只能在表达式中使用节,而不能在模式中使用节。没有什么深层次的原因说明为什么模式中不允许使用
(True &&)
。但这是一件非常罕见的事情,我认为不值得让事情变得复杂。Yes, the way you define it is better. From the Prelude:
You can only use sections in expressions, not in patterns. There is no deep reason why
(True &&)
shouldn't be allowed in a pattern. But it's such a rare thing to want that I don't think it's worth the complication.