haskell中的函数组合类型推理

haskell中的函数组合类型推理,haskell,type-inference,Haskell,Type Inference,在haskell中,()函数的类型是: (.) :: (b -> c) -> (a -> b) -> a -> c ()(的类型为: (.) (.) :: (a -> b -> c) -> a -> (a1 -> b) -> a1 -> c 我无法推断结果,这是怎么做到的 (.) :: (b -> c) -> (a -> b) -> a -> c 让我们看一下。这个函数需要做的第一件事是(

在haskell中,
()
函数的类型是:

(.) :: (b -> c) -> (a -> b) -> a -> c
()(
的类型为:

(.) (.) :: (a -> b -> c) -> a -> (a1 -> b) -> a1 -> c
我无法推断结果,这是怎么做到的

(.) :: (b -> c) -> (a -> b) -> a -> c
让我们看一下。这个函数需要做的第一件事是
(b->c)
(因此函数从
b
c
),很酷。通过添加一对(冗余)括号:

(.) :: (b -> c) -> ((a -> b) -> a -> c)
       ^-- I am b'  ^-- I am c'   -- (b' and c' not to have name clash)
第一部分,我们给出了功能(即已处理):

我希望这事能解决。要点是:类型推断很容易“得到”,一旦你得到了,仅仅是一个替换的问题就可以达到ghci自动推断的结果。
ot:我们可以称这个提问操作员为
boobs

承认吧,你只是想在上面写
(.)
SO@luqui你明白了!:D
(.) (.) :: (a -> b') -> a -> c'
-- after substituting stuff (b' and c')
(.) (.) :: (a -> (b -> c)) -> a -> ((a1 -> b) -> a1 -> c)
                                    ^-- of course a1 /= a
-- you could eliminate redundant parentheses
(.) (.) :: (a -> b -> c) -> a -> (a1 -> b) -> a1 -> c
-- wee