
Hello Ashley, Friday, April 28, 2006, 5:09:07 AM, you wrote:
You can do two-way fundeps. Can these be done with associated types? For instance:
It might not be a great loss if not.
may be you want to say "it might be a great loss" ? i'm using two-way fundeps to implement monad-independent algorithms that uses references. these definitions: class (Monad m) => Ref m r | m->r, r->m where newRef :: a -> m (r a) readRef :: r a -> m a writeRef :: r a -> a -> m () instance Ref IO IORef where newRef = newIORef readRef = readIORef writeRef = writeIORef instance Ref (ST s) (STRef s) where newRef = newSTRef readRef = readSTRef writeRef = writeSTRef allows me to write algorithms that works in both monads -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com