<div dir="auto"><div>Your code doesn't type check and there is no way to write a total function with the type of foobar. What are you actually trying to do? Why do you say this is "common"?<br><br><div class="gmail_quote"><div dir="ltr">On Tue, Jul 31, 2018, 3:07 AM Marc Busqué <<a href="mailto:marc@lamarciana.com">marc@lamarciana.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi!<br>
<br>
I have two functions:<br>
<br>
```<br>
foo :: a -> Maybe b<br>
bar :: a -> Maybe c<br>
```<br>
<br>
>From which I want to build a higher order function:<br>
<br>
```<br>
foobar :: a -> (a -> Maybe b) -> (a -> Maybe c) -> Either b c<br>
```<br>
<br>
The implementation I need is:<br>
<br>
```<br>
foobar x f g =<br>
   case (f x) of<br>
     Nothing -> g x<br>
     Just y  -> Just y<br>
```<br>
<br>
I'm a bit surprised that looking at hoogle I don't find a built-in<br>
solution for this quite common need for `Maybe` types (or perhaps for<br>
any monad).<br>
<br>
Am I looking in the wrong way? Does it exist a similar abstraction but<br>
with a different shape?<br>
<br>
Thanks in advance,<br>
<br>
Marc Busqué<br>
<a href="http://waiting-for-dev.github.io/about/" rel="noreferrer noreferrer" target="_blank">http://waiting-for-dev.github.io/about/</a>_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div></div></div>