我正在尝试使用$
运算符来了解Haskell表达式。专门介绍如何使用$
运算符或其他必要的运算符在Haskell中编写代码:
add 1 (add (subtract 2 4) (subtract 8 16))
我设法删除了两个paren组,如下所示:
add 1 $ add (subtract 2 4) $ subtract 8 16
但是仍然需要删除最后一对。
有什么想法吗?
答案 0 :(得分:3)
您可以尝试中缀表格
add 1 $ subtract 2 4 `add` subtract 8 16
编辑
还有其他方法。
让我们定义:
newtype W a = W { w :: a }
pure' = W
(.$.) :: W (a -> b) -> a -> W b
(.$.) (W a) b = W $ a b
以及要使用的操作
plus :: Int -> Int -> Int
plus = (+)
然后我们可以下一步
foo :: Int
foo = w $ pure' plus .$. plus 1 2 .$. 2
它基本上是适用的函子(您可以在Google上搜索它的示例),只是名称不同。
您用w $ pure'
前缀操作,并用.$.
分隔参数。