Continuation Passing Style
Ashley Yakeley
ashley@semantic.org
Thu, 14 Mar 2002 18:29:29 -0800
At 2002-03-14 16:10, Tom Bevan wrote:
>I noticed that Ralf Hinze posted a CPS monad yesterday.
He did? Anyway I have one here:
<http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/hscheme/Source/C
ontinuationPassing.hs?rev=HEAD&content-type=text/plain>
Basically it's this:
newtype CPS ex p a = MkCPS {unCPS :: (ex -> p) -> (a -> p) -> p};
'ex' is exception, so that I can make it an instance of MonadError.
>Would someone be kind enough to post a simple example of a function that
>uses CPS.
Once you've made it an instance of Monad, of course you can just use 'do'
notation. But I use CPS here (for my Scheme interpreter) because you can
do call-with-current-continuation.
--
Ashley Yakeley, Seattle WA