Ped*_*olo 1 haskell functional-programming function-composition
当我们有表达式时:
(fmap . fmap) function nested_functor
Run Code Online (Sandbox Code Playgroud)
我希望它能翻译成类似的东西
fmap (fmap function nested_functor)
Run Code Online (Sandbox Code Playgroud)
虽然它出人意料地表现得像
fmap (fmap function) nested_functor
Run Code Online (Sandbox Code Playgroud)
为什么?
好吧,看看定义(.):
(f . g) x = f (g x)
Run Code Online (Sandbox Code Playgroud)
所以,
(fmap . fmap) function = fmap (fmap function)
Run Code Online (Sandbox Code Playgroud)
在最后添加一个额外的参数并没有真正改变方程 - 只是使它更具体.
(fmap . fmap) function nested_functor = fmap (fmap function) nested_functor
Run Code Online (Sandbox Code Playgroud)
(NB函数应用程序是左关联的,所以f x y意味着(f x) y.)