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"?

On Tue, Jul 31, 2018, 3:07 AM Marc Busqué <marc@lamarciana.com> wrote:
Hi!

I have two functions:

```
foo :: a -> Maybe b
bar :: a -> Maybe c
```

>From which I want to build a higher order function:

```
foobar :: a -> (a -> Maybe b) -> (a -> Maybe c) -> Either b c
```

The implementation I need is:

```
foobar x f g =
   case (f x) of
     Nothing -> g x
     Just y  -> Just y
```

I'm a bit surprised that looking at hoogle I don't find a built-in
solution for this quite common need for `Maybe` types (or perhaps for
any monad).

Am I looking in the wrong way? Does it exist a similar abstraction but
with a different shape?

Thanks in advance,

Marc Busqué
http://waiting-for-dev.github.io/about/_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.