Proposal: add replay function to Control.Monad.Cont.Class

Tom Ellis tom-lists-haskell-cafe-2017 at jaguarpaw.co.uk
Sun Mar 7 09:25:18 UTC 2021


On Sun, Mar 07, 2021 at 03:25:16AM +0000, Alexandre Esteves wrote:
> replay :: MonadCont m => m (m a)
> replay = callCC $ pure . fix
> 
> Using this in a do-notation block allows one to bind a name to the
> sub-block that starts immediately after.
> I reached for continuations to try to get this behavior for use with
> recursive flows without disrupting the reading of the main forward flow and
> found how to do it in https://jsdw.me/posts/haskell-cont-monad/ under the
> name "goto".
> 
> While "goto" is as familiar as a name can be, I feel "replay" more
> accurately conveys, that you can only 'go back', by stating what actually
> is happening - that a sub-block we're currently evaluating is replayed from
> its beginning.

Looks like a "label" more than a "goto" to me.  Would "label" be a
good name?


More information about the Libraries mailing list