“多参数”功能组合如何工作(例如fmap.fmap)?

时间:2016-12-08 18:17:49

标签: haskell functional-programming function-composition

当我们有表达式时:

(fmap . fmap) function nested_functor

我希望它能翻译成类似

的东西
fmap (fmap function nested_functor)

虽然令人惊讶地表现得像

fmap (fmap function) nested_functor

为什么?

1 个答案:

答案 0 :(得分:9)

好吧,看看 <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:drawableLeft="@drawable/video_camera" android:drawableRight="@drawable/right_arrow" android:text="See a Medical\nDoctor Now"/> 的定义:

(.)

所以,

(f . g) x = f (g x)

在最后添加一个额外的参数并没有真正改变方程 - 只是使它更具体。

(fmap . fmap) function = fmap (fmap function)

(N.B。功能应用程序是左关联的,因此(fmap . fmap) function nested_functor = fmap (fmap function) nested_functor 表示f x y。)