[Haskell-cafe] Re: Generalizing IO
Andrew Coppin
andrewcoppin at btinternet.com
Thu Oct 8 15:42:05 EDT 2009
Heinrich Apfelmus wrote:
> Alternatively, you can use algebraic data types instead of type classes
> to generalize one program to different implementations. For monads, this
> can be achieved with
>
> http://hackage.haskell.org/package/MonadPrompt
>
> In particular, the idea is to turn every effect like
>
> getLine
>
> into a constructor
>
> GetLine
>
> and have different implementations pattern match on that.
>
Ooo, that's interesting...
I did wonder for a moment whether this would allow you to analyse what
the monadic action does without actually "doing" it, but on reflection
this is fundamentally impossible. The action that happens next can (and
often does) depend on the result of a previous effect.
I guess if you wanted to run your action through an optimiser before
actually running it, you'd need to use arrows (and all the terrifying
syntax that entails)...
More information about the Haskell-Cafe
mailing list