这个表达式可以写成没有括号或反向标记吗?

时间:2017-02-04 18:08:45

标签: haskell function-composition

mul (add 2 3) 5

点(.)和美元($)运算符可以单独替换括号吗? muladd函数是填充符,即应用程序的顺序必须保持不变。 这是为了更好地理解上述操作员的练习。

2 个答案:

答案 0 :(得分:1)

您可以使用组合子flip来反转参数的顺序。以下每一行都是等效的:

mul (add 2 3) 5
(flip mul) 5 (add 2 3)
flip mul 5 $ add 2 3

flip被定义为:

flip :: (a -> b -> c) -> (b -> a -> c)
flip f b a = f a b

但是,我认为仅仅两个运营商.$就足够了

答案 1 :(得分:0)

您可以使用mul的代数属性:

mul 5 $ add 2 3