给出中缀使用的功能:
let f a b = (a+10, b)
f 4 5
=> (14,5)
4 `f` 5
=> (14,5)
可以通过定义辅助函数来翻转参数:
let g = flip f
4 `g` 5
=> (15,4)
是否可以内联执行此操作?
4 `flip f` 5
=> parse error on input `f'
4 `(flip f)` 5
=> parse error on input `('
我的用例是Control.Arrow.first
。而不是
(+10) `first` (7,8)
(17,8)
我更喜欢像
这样的前瞻性应用程序式解决方案(7,8) `forwardFirst` (+10)
无需编写
let forwardFirst = flip first
答案 0 :(得分:1)
详见HaskellWiki article on infix operators,
请注意,通常只能使用两个函数来执行此操作 参数。实际上,对于一个多于两个参数的函数, 你可以做到,但它不是那么好
在你的情况下这样做的方法是这样的:
let f a b = (a+10, b)
let h a b = (f `flip` a) b
let a = 3
let b = 2
f a b = (13,2)
a `h` b = (12,3)