
Miranda modelled IO as a (lazy) function from [Char] -> [Char] … pretty unwieldy to use “raw”, but it was made controllable by a set of combinators that could be seen as a proto-monadic library. Simon Y.
On 24 Oct 2016, at 15:50, Ronald Legere
wrote: I must admit to some curiosity about this as well. My recollection was that the original approach was to use lazy streams IO:: [request] -> [respose].
This can be managed a bit better using continuations (Perhaps continuations can also be considered a separate approach?)
And now we have the IO Monad. (which can be defined in terms of the stream based approach but is not implemented that way)
The only other approach I am aware of is Clean's "Unique types".
Simon Thompson | Professor of Logic and Computation School of Computing | University of Kent | Canterbury, CT2 7NF, UK s.j.thompson@kent.ac.uk mailto:s.j.thompson@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt http://www.cs.kent.ac.uk/~sjt