[Haskell-beginners] How does forever works ?
Francesco Ariis
fa-ml at ariis.it
Mon Jul 9 11:54:29 UTC 2018
Hello Olivier,
On Mon, Jul 09, 2018 at 01:31:07PM +0200, Olivier Revollat wrote:
> In the second case, it's a simple recursion, so far so good ... but when I
> look at the implementation of "forever" i can't wrap my head around :
>
> http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Monad.html#forever
forever a = let a' = a *> a' in a'
`*>` is the same as `>>` (if you have ever met `>>`), with the difference
that the latter works on monads only. In do notation, we could write
forever :: Monad m => m a -> m b
forever a = let a' = do a
a' in
do a'
Which should be easier to get: we `do` a'; a' is nothing but a and a',
so we do a and then a', which is nothing but a and a', etc.
Does this explanation feel right?
As soon as you can, familiarise yourself what the do notation desugars to:
in my opinion plain operators are clearer
-F
More information about the Beginners
mailing list