Whither Effects-Continuations-Monads?

Ignorant question: Might anybody be able to succinctly say where we are vis-a-vie effects-continuations-monads? Do we have languages where we can have fun managing effects? Did we give up on the monadic approaches to this? I am too completely out of my depth / behind the times in terms of this research. As a Joe Programmer in the Street, I just want it now and in a usable fashion :-)

E.g. many years back, Filinksi's thesis seemed to talk about a nice way to get all this via monads in standard ML.

Many computational effects, such as exceptions, state, or nondeterminism, can be conveniently specified in terms of monads. We investigate a technique for uniformly adding arbitrary such effects to ML-like languages, without requiring any structural changes to the programs themselves.

Did that turn out to not have good usability or something? I have been trying to skim things related / citing that stuff, but it is all over my head at this point. And I don't yet see if/how/when any such things are reified in a language I can use.

thank you.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

A usable design

I don't think a usable design was published until Eff in 2012.

Also, just because you don't speak the word "monad" doesn't mean that they're not there. The unifying ideas are fascinating, but you don't need to reify the abstraction to benefit from the insights. You only need to mention "bind" and "return" if you're getting some value from that abstraction.

We might have to wait a fair long while for this stuff to show up in pragmatic languages though. Common Lisp style condition systems still haven't really caught on. I view conditions as a precursor to handler-style effects systems. Sadly, the primary practical runtimes of interest (JVM, Javascript, those with smooth C-interop, etc) lack delimited continuations and/or tail calls are unlikely to adopt them both soon. Especially true given resource management concerns.

Monoids or monads?

This interesting IFL draft submission is at least a step in the direction you're discussing: Monoids Model Extensibility.

Also relevant is Daan Leijen's work on Koka, a language based almost entirely on effect inference, which he has used to write a web-based scholarly document markup engine named Madoko. LtU has previously discussed Koka.