
Tomasz Zielonka wrote:
On Fri, Jul 15, 2005 at 11:51:59PM +0200, Magnus Carlsson wrote:
A while ago, I attempted to marry value recursion a la Levent Erkök with the continuation-monad transformer. It seems possible if the underlying monad has value recursion and references. Interestingly, all mfix properties except left shrinking appear to be valid.
There are slides about this (including implementation) at
http://www.cse.ogi.edu/~magnus/mdo-callcc-slides.pdf
There is also a draft paper at
I've already found your paper and played with the implementation :-)
:-)
I was stupid to think that with MonadCont+MonadFix+getCC it would be possible to do forward jumps, but of course it doesn't work because of the strictness law.
I would expect forward jumps to work. For example, consider callcc (\k -> mfix (\v -> E)) where we assume that E is an expression in which k and v are free. Then it would be OK for E to invoke k and thereby jump "forward". In this case, the recursive value (bound to v) is simply bottom. Moreover, suppose E in turn captures the current continuation and gives it as an argument to k. Then, it is possible to jump back inside E again at a later point. E might in this case return a non-bottom value, which also would be the value of v. Cheers, Magnus