
Am Montag 11 Mai 2009 18:36:54 schrieb Christopher Lane Hinson:
I've noticed that a large majority of fundeps I see in other people's libraries are written:
class C a b | b -> a
Where the dependent parameter appears first in the MPTC. Is there a reason for this?
Yes. Generalised newtype deriving (perhaps others, but that's what jumped at me). Consider class MonadState s m | m -> s where ... newtype State s a = State { runState :: s -> (a,s) } instance Monad (State s) where ... instance MonadState s (State s) where ... newtype MySpecialState s a = MSS (State (s,Int) a) deriving (Monad, MonadState (s,Int))
AFAIK, there isn't any semantic significance to the order of parameters in an MPTC. Why do many haskellers find this configuration more intuitive?
Friendly, --Lane