繁体   English   中英

为什么类型f(fbc)(f(fab)(fac))不匹配(。)?

[英]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.

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