Hayoo/Hoogle not matching monomorphic/less polymor

2020-07-06 05:00发布

问题:

I'm trying to understand if there's a fundamental reason for why Hoogle and Hayoo aren't matching, for instance

(b -> c) -> (b' -> c') ->   (b, b') -> (c, c')

to

a b c    -> a b' c'    ->   a (b, b') (c, c')

which happens to be the type of Control.Arrow.***:

(***) :: a b c -> a b' c' -> a (b, b') (c, c')

— is this likely just something that's as-of-yet unimplemented, or is there something fundamental that is preventing this sort of type based search from ever being implemented?

回答1:

With Hoogle, it seems to be a consequence of how -> is handled. Issue #64 in the GitHub tracker, which is very similar to what we are discussing here, includes this comment by Neil Mitchell:

Currently I quickly split out the result type from the arguments. I guess one approach would be to find instances for -> and pregenerate a version with -> substituted in.