What does Pure mean in Free monad in Haskell?

253 Views Asked by At

I try to learn free monads. I found following:

data Free f r = Free (f (Free f r)) | Pure r

What does Pure mean? And why do I need r with Pure?

1

There are 1 best solutions below

0
On

Pure corresponds to the return operation -- conceptually it attaches to your functor the ability to "inject" a value. The Free constructor corresponds to "join".

If you want to understand why you "need" Pure, try to remove it and give the Monad instance and see where you get stuck!