You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I tried searching for this in Hoogle and found no matches:
Monad m => (e -> ExceptT x m a) -> ExceptT x m (Either e a) -> ExceptT x m a
I then implemented it like this:
onLeft :: Monad m => (e -> ExceptT x m a) -> ExceptT x m (Either e a) -> ExceptT x m a
onLeft h f = f >>= either h pure
Inferring the type signature I get this:
onLeft :: Monad m => (a -> m b) -> m (Either a b) -> m b
onLeft h f = f >>= either h pure
The inferred type signature is one that actually yields results:
Monad m => (a -> m b) -> m (Either a b) -> m b
fromRightM :: Monad m => (a -> m b) -> m (Either a b) -> m b
fromEitherMM :: Monad m => (e -> m a) -> m (Either e a) -> m a
fromEitherOrMM :: Monad m => m (Either e a) -> (e -> m a) -> m a
If Hoogle can somehow infer the generic type signature from the specialised one and put that in the search results, that would help a lot.
The text was updated successfully, but these errors were encountered:
Yep, this would be desirable - but its hard because of the way Hoogle is implemented. Hoogle essentially tries to find things that have the same shape, or the same interesting type names. Because you end up unifying ExceptT x m with m, you have neither the same shape or type names. If you just generatlise then you can generalise in many many ways, and that would be a bit of a combinatorial explosion. For instance, this type aliases with undefined and coerce. I don't have any great ideas for finding what you describe.
I tried searching for this in Hoogle and found no matches:
I then implemented it like this:
Inferring the type signature I get this:
The inferred type signature is one that actually yields results:
If Hoogle can somehow infer the generic type signature from the specialised one and put that in the search results, that would help a lot.
The text was updated successfully, but these errors were encountered: