为什么类型 f (f b c) (f (f a b) (f a c)) 不匹配 (.)?
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 将搜索拆分为参数和 return 外部 (->)
部分的类型,然后在组合结果之前单独搜索每个部分。外层 (->)
处理得非常特殊,特别是它很乐意重新排序参数。
Hoogle 以这种方式工作的更根本原因是它是一个搜索引擎,而不是一个统一引擎。如果您正在搜索上述内容,然后返回 (.)
,是否已经回答了您的问题?我的猜测可能不是。我最喜欢的例子是搜索 "a -> [(a,b)] -> b"
应该 return lookup
,即使它不统一。
我刚刚制定了 (.)
的类型,据我所知,这是概括的,但是,在将其输入 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 将搜索拆分为参数和 return 外部 (->)
部分的类型,然后在组合结果之前单独搜索每个部分。外层 (->)
处理得非常特殊,特别是它很乐意重新排序参数。
Hoogle 以这种方式工作的更根本原因是它是一个搜索引擎,而不是一个统一引擎。如果您正在搜索上述内容,然后返回 (.)
,是否已经回答了您的问题?我的猜测可能不是。我最喜欢的例子是搜索 "a -> [(a,b)] -> b"
应该 return lookup
,即使它不统一。