Excerpts from Jacek Generowicz's message of Fri Dec 17 20:17:30 -0500 2010:
> Imagine an activity which may be performed either by a computer, or
> by a human (alternatively, either locally, or remotely across a
> network). From Haskell's type system's perspective, these two will
> look completely different (most obviously, the human (or the
> network) is wrapped in IO). How can they be made interchangeable ?

This particular example can be resolved from lifting the pure, computer
computation into IO.  One way of abstracting this interaction is to use the 
Prompt
monad. [1]

This doesn't work in general, and indeed types do have the unfortunate property
of reducing modularity.  This is especially evident when you work with dat
structures that have their invariants encoded in the type system.  [2]
Or maybe this is a good thing, since you don't want IO leaking into your test
suite without you knowing about it...

[1] http://web.mit.edu/~ezyang/Public/threemonads.pdf
[2] http://www.cis.upenn.edu/~bcpierce/papers/harmful-mfps.pdf

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to