[Haskell] Partially applied type class functions
Roberto Zunino
roberto.zunino at sns.it
Fri Aug 5 13:55:39 EDT 2005
Paul Govereau wrote:
[snip]
>>instance AbSyn Constraint where
>> subst e n constr =
>> let sub = subst e n -- :: AbSyn a => a -> a
>> in case constr
>> of Zero expr -> Zero (sub expr)
>> AndL cs -> AndL (sub cs)
>
>It looks sort of like sub is being monomorphised -- or something?
I think you just hit the monomorphism restriction. For the details, see:
http://www.haskell.org/onlinereport/decls.html - Sect. 4.5.5
http://haskell.org/hawiki/MonomorphismRestriction
Possible solutions for your specific case are:
1) add an explicit type signature for sub
let sub :: AbSyn a => a -> a
sub = subst e n
in ...
2) eta-expand sub, so its definition becomes a function binding
let sub c = subst e n c
in ...
Regards,
Roberto Zunino.
More information about the Haskell
mailing list