[Haskell-cafe] Re: Monad instance for partially applied type constructor?
daniel.is.fischer at web.de
Wed Sep 29 17:41:13 EDT 2010
On Wednesday 29 September 2010 23:15:14, DavidA wrote:
> Ryan Ingram <ryani.spam <at> gmail.com> writes:
> > Haskell doesn't have true type functions; what you are really saying
> > is
> > instance Monad (\v -> Vect k (Monomial v))
> Yes, that is exactly what I am trying to say. And since I'm not allowed
> to say it like that, I was trying to say it using a type synonym
> parameterised over v instead. It appears that GHC won't let you use
> partially applied type synonyms as type constructors for instance
> declarations. Is this simply because the GHC developers didn't think
> anyone would want to, or is there some theoretical reason why it's hard,
> or a bad idea?
I think there was a theoretical reason why that isn't allowed (making type
inference undecidable? I don't remember, I don't recall ...).
For your problem, maybe
data Vect k m b = Vect [(k, m b)]
instance Monad (Vect k Monomial) where ...
is an option?
More information about the Haskell-Cafe