我相信我对fmap . fmapFunctors 了解,但是在功能方面它已经让我头疼了好几个月了.
我已经看到你可以只应用(.)to 的定义(.) . (.),但我忘了怎么做.
当我自己尝试时,它总是错误的:
(.) f g = \x -> f (g x)
(.) (.) (.) = \x -> (.) ((.) x)
\x f -> (.) ((.) x) f
\x f y -> (((.)(f y)) x)
\x f y g-> (((.)(f y) g) x)
\x f y g-> ((f (g y)) x)
\x f y g-> ((f (g y)) x):: t2 -> (t1 -> t2 -> t) -> t3 …Run Code Online (Sandbox Code Playgroud) 所以我知道:
(.) = (f.g) x = f (g x)
Run Code Online (Sandbox Code Playgroud)
它的类型是(B-> C) - >(A-> B) - > A-> C但是怎么样:
(.)(.) = _? = _?
Run Code Online (Sandbox Code Playgroud)
这是如何表示的?我想到了:
(.)(.) = (f.g)(f.g)x = f(g(f(g x))) // this
(.)(.) = (f.g.h)x = f(g(h x)) // or this
Run Code Online (Sandbox Code Playgroud)
但就我试图获得它的类型而言,GHCi告诉我的不正确.那么什么都是"_?"
另外 - 函数/运算符$做什么?