> But how can one implement RefMonad to support references of all possible > types simultaneously?
...you could use Dynamics... but other than that, I think you're stuck... > ----- Original Message ----- > From: "Derek Elkins" <[EMAIL PROTECTED]> > To: "Tim Sweeney" <[EMAIL PROTECTED]> > Cc: <[EMAIL PROTECTED]> > Sent: Thursday, May 29, 2003 10:31 PM > Subject: Re: Implementing RefMonads in Haskell without ST,IO > > > > On Thu, 29 May 2003 22:48:05 -0500 > > "Tim Sweeney" <[EMAIL PROTECTED]> wrote: > > > > > If it's not possible to implement a typesafe RefMonad instance > > > directly in Haskell, without making use of built-in imperative > > > features like IO, then doesn't this refute the claims that monads > > > implement imperative features functionally? > > > > > > -Tim > > > > You certainly can have an instance of RefMonad that -simulates- > > updateable references. You can't implement this with update inplace > > without an update inplace primitive and if Haskell had an update inplace > > primitive that you could use anywhere it wouldn't be a pure language. > > Monads in Haskell -allow- imperative features and use of imperative > > features without breaking the purity of the entire language. Outside a > > monadic computation equational reasoning always holds, even when talking > > about imperative actions. That monads implement an imperative effect > > doesn't mean they implement it the same way an imperative language > > would. Of course, the actual implementation doesn't matter so > > implementing it imperatively is just as good as implementing it > > functionally as far as static semantics go, which is why everything > > (IO&ST) works out. > > _______________________________________________ > Haskell mailing list > [EMAIL PROTECTED] > http://www.haskell.org/mailman/listinfo/haskell > _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell