![](/img/trans.png)
[英]Functor is for (a -> b) -> (f a -> f b), what is for (Category c) => c a b -> c (f a) (f b)?
[英]Why doesn't the type f (f b c) (f (f a b) (f a c)) match (.)?
据我所知,我只是制定了(.)
的类型,但是将其键入Hoogle时 ,没有得到任何结果。
我曾期望
(.) :: (->) ((->) b c) ((->) ((->) a b) ((->) a c))
~ (b -> c) -> ((a -> b) -> (a -> c))
~ (b -> c) -> (a -> b) -> a -> c
匹配
thistype ~ f (f b c) (f (f a b) (f a c))
技术上的答案是,Hoogle将搜索分为外部(->)
部分的参数和返回类型,然后在组合结果之前分别搜索每个部分。 外部(->)
的处理方式非常特殊,特别是对参数重新排序很高兴。
Hoogle采用这种方式的更根本原因是它是搜索引擎,而不是统一引擎。 如果您正在搜索以上内容,然后返回(.)
,那将回答您的问题吗? 我的猜测可能不是。 我最喜欢的示例是搜索"a -> [(a,b)] -> b"
应该返回lookup
,即使它没有统一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.