[Haskell-cafe] Feeding a monad into itself

Joshua Grosso jgrosso1 at asu.edu
Fri Jul 21 02:52:11 UTC 2017


Could MonadPlus (with mzero) or Alternative (with empty) provide the
termination condition, if this pattern turned out to be more generally
useful?

Joshua Grosso

On Thu, Jul 20, 2017 at 7:16 PM, Jeff Clites <jclites at mac.com> wrote:

> Also this pattern does seem Maybe-specific, in that for the general Monad
> case there's not an obvious termination condition.
>
> JEff
>
> On Jul 20, 2017, at 11:03 AM, Rein Henrichs <rein.henrichs at gmail.com>
> wrote:
>
> This is about as good as you can do. The monad-loops package provides a
> variety of similar combinators, generally implemented in similar ways, but
> not this specific combinator. The downside of this combinator is that it is
> partial: it will run forever without producing anything if f never gives a
> Nothing.
>
> On Thu, Jul 20, 2017 at 10:27 AM Jake <jake.waksbaum at gmail.com> wrote:
>
>> I have a function f :: a -> Maybe a that I want to feed into itself with
>> some initial input until it returns Nothing.
>>
>> untilNothing :: (a -> Maybe a) -> a -> a
>> untilNothing f x = case f x of
>>                             Just x' -> untilNothing f x'
>>                             Nothing -> x
>>
>> Is there a better way to do this? I feel like there is something more
>> general going on with Monads being fed into themselves, but maybe I'm
>> wrong. Thoughts?
>> _______________________________________________
>> 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.
>
> _______________________________________________
> 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.
>
>
> _______________________________________________
> 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.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20170720/766e45ba/attachment.html>


More information about the Haskell-Cafe mailing list