繁体   English   中英

haskell中的函数组合类型推断

[英]function composition type inference in haskell

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

(.) :: (b -> c) -> (a -> b) -> a -> c

(.) (.)的类型是:

(.) (.) :: (a -> b -> c) -> a -> (a1 -> b) -> a1 -> c

我无法推断出结果,这是怎么做到的?

(.) :: (b -> c) -> (a -> b) -> a -> c

我们来看看吧。 这个函数首先采用的是(b -> c) (所以从bc的函数),很酷。 通过添加一对(冗余)括号:

(.) :: (b -> c) -> ((a -> b) -> a -> c)
       ^-- I am b'  ^-- I am c'   -- (b' and c' not to have name clash)

第一部分,我们给了函数(即已经处理过):

(.) (.) :: (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

我希望这能解决它。 重点是:类型推断很容易“得到”,一旦你得到它只是替代问题达到ghci自动推断。 ot:我们可以称这个古怪的操作员boobs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM