haskellで少し遊んだ後、私はこの関数に出くわしました:
Prelude Data.Maclaurin> :t ((+) . ($) . (+))
((+) . ($) . (+)) :: (Num a) => a -> (a -> a) -> a -> a
(Data.Maclaurinはパッケージvector-spaceによってエクスポートされます。)したがって、Num、関数、別のNumを取り、最終的にNumを返します。次の機能を実現する魔法は何ですか?
Prelude Data.Maclaurin> ((+) . ($) . (+)) 1 2 3
6
2は明らかに関数ではありません(a-> a)または私は何かを逃しましたか?