2

据我所知,我刚刚制定了(.), 概括的类型,但是,在将其输入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))
4

1 回答 1

3

技术上的答案是,Hoogle 将搜索拆分为外部(->)部分的参数和返回类型,然后在组合结果之前单独搜索每个部分。外部(->)被非常特殊地对待,特别是它很乐意重新排序参数。

Hoogle 以这种方式工作的更根本原因是它是一个搜索引擎,而不是一个统一引擎。如果您正在搜索上述内容并返回(.),那会回答您的问题吗?我的猜测可能不是。我最喜欢的例子是搜索"a -> [(a,b)] -> b"应该返回lookup,即使它没有统一。

于 2018-08-26T10:45:59.317 回答