手动定义布尔连接

发布于 2024-12-01 19:07:52 字数 716 浏览 0 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

层林尽染 2024-12-08 19:07:52

是的,你定义它的方式更好。前奏:

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

您只能在表达式中使用节,而不能在模式中使用节。没有什么深层次的原因说明为什么模式中不允许使用 (True &&) 。但这是一件非常罕见的事情,我认为不值得让事情变得复杂。

Yes, the way you define it is better. From the Prelude:

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文