我有一系列函数fun1 $ fun2 $ fun3
应用于变量var
fun1 $ fun2 $ fun3 var
。如何将此管fun1 $ fun2 $ fun3
提取到独立函数fun = (fun1 $ fun2 $ fun3)
中,该函数可以作为var
应用于fun var
?
例如,我有一系列功能:BS.unpack $ JSON.encode var
。我想从BS.unpack $ JSON.encode
语句中将BS.unpack $ JSON.encode var
提取到let fun = BS.unpack . JSON.encode
,但我收到错误:
No instance for (JSON.ToJSON a0)
arising from a use of `JSON.encode'
The type variable `a0' is ambiguous
我的功能提取有什么问题?
答案 0 :(得分:6)
您正在寻找的是函数组合运算符.
。其工作原理如下:
(f . g) x = f (g x) = f $ g x
因此,fun = fun1 . fun2 . fun3
是您正在寻找的。 p>