【发布时间】:2018-10-02 05:44:12
【问题描述】:
我正在尝试使用 $ 运算符了解 Haskell 表达式。特别是关于如何在 Haskell 中使用 $ 运算符或其他如果需要的话:
add 1 (add (subtract 2 4) (subtract 8 16))
我设法删除了两个paren组,如下所示:
add 1 $ add (subtract 2 4) $ subtract 8 16
但仍然需要删除最后一对。
有什么想法吗?
【问题讨论】:
-
add和subtract是什么?它们是如何定义的? -
不确定这是否重要,但对于这种情况,
add = (+)和subtract = flip (-)。 -
请注意,
$和.不一定要在所有情况下都删除括号。最重要的用途是将应用程序f1 (f2 (f3 (f4 x)))的链 转换为“管道”f1 $ f2 $ f3 $ f4 $ x或(f1 . f2 . f3 . f4) x的形式,使其更具可读性。这不适用于需要多个参数的函数。 -
这很清楚,谢谢。我想确保这是不可能的,或者如果可能的话。
标签: haskell operators operator-precedence