Is there in Scalaz any concept of a "runnable" monad? - one from which the result value can be extracted, potentially by hidden side effects?
trait RunnableM[M[_]] {
def runM[T](m: M[T]): T
}
I would need this to evaluate a monadic computation and exit from the monad at the end. In Haskell we have different "run" functions for monads which might or might not involve IO, so a typeclass of this sort might not be possible, at least to my thinking. But in Scala it could be done.