[Haskell-cafe] GHC 6.7 and Associated Types
mux at FreeBSD.org
Tue Apr 17 06:18:23 EDT 2007
I've been documenting myself on associated types, which look like a very
nice way to deal with the problems that arise with multi-parameter type
classes. As an exercise, I am trying to rewrite the MonadState type
class from the mtl package without functional dependencies.
Here is my (probably very naive) approach :
class MonadState m where
type StateType m :: *
get :: m StateType
put :: m StateType -> m ()
As for instances:
instance MonadState (State s) where
type StateType = s -- this is line 22
get = State $ \s -> (s, s)
put s = State $ \_ -> ((), s)
I think I'm probably doing some very stupid thing and missing important
points. In any case, here's the error I get :
State.hs:22:19: Not in scope: type variable `s'
Failed, modules loaded: none.
I'd be happy to be explained why this doesn't make sense, and how I
should proceed to implement this correctly. I have tried various other
approaches with no luck yet.
More information about the Haskell-Cafe