Haskell 这个表达式可以不加括号或反勾吗?
点(Haskell 这个表达式可以不加括号或反勾吗?,haskell,function-composition,Haskell,Function Composition,点()和美元($)运算符能否单独替换括号? mul和add函数是填充函数,即应用顺序必须保持不变。 这是一个更好地理解上述运算符的练习。您可以使用mul的代数性质: mul (add 2 3) 5 您可以使用combinatorflip来反转参数的顺序。以下每一行都是等效的: mul 5 $ add 2 3 flip定义如下: mul (add 2 3) 5 (flip mul) 5 (add 2 3) flip mul 5 $ add 2 3 但是,我不认为两个操作符和$就足够了完全替换
)和美元($
)运算符能否单独替换括号?
mul
和add
函数是填充函数,即应用顺序必须保持不变。
这是一个更好地理解上述运算符的练习。您可以使用mul的代数性质:
mul (add 2 3) 5
您可以使用combinator
flip
来反转参数的顺序。以下每一行都是等效的:
mul 5 $ add 2 3
flip
定义如下:
mul (add 2 3) 5
(flip mul) 5 (add 2 3)
flip mul 5 $ add 2 3
但是,我不认为两个操作符
和$
就足够了完全替换括号,还是允许引入新的括号?完全替换,是的。使用where子句可以很好地扩展到更复杂的示例mul s 5,其中s=add 2 3
当且仅当实际使用的函数具有该属性时,请参阅“mul和add函数是填充函数”。当然,该行旨在解释为一个先决条件。我认为,如果从字面上理解OP的要求,那么这一点就非常接近了。
flip :: (a -> b -> c) -> (b -> a -> c)
flip f b a = f a b