[Haskell-cafe] Re: Specific to General to Specific
ezyang
ezyang at MIT.EDU
Thu Aug 19 14:07:22 EDT 2010
Hey Oleg,
Thanks for the response!
Excerpts from oleg's message of Thu Aug 19 03:51:05 -0400 2010:
> Granted, we would have to write boilerplate as we have to re-direct
> specialized methods to the general ones.
Interesting. As far as I can tell, this means that any general method
that I want to use in the specialized typeclass needs to be explicitly
redirected in the specialized typeclass's definition. What does a user
do if they would like to write their own generic function (using
the other generic functions) and then specialize it?
> Here is the instance of this trick, adopted to use type families
> rather than functional dependencies (no UndecidableInstances is
> required now):
The example (concatenated with the previous full code), doesn't typecheck
for me:
Prelude> :r
[1 of 1] Compiling Main ( Test.hs, interpreted )
Test.hs:60:18:
No instance for (Apply (NM mg n))
arising from a use of `apply' at Test.hs:60:18-38
Possible fix: add an instance declaration for (Apply (NM mg n))
In the expression: apply (NM :: NM mg n)
In the definition of `monadicValue'''':
monadicValue''' = apply (NM :: NM mg n)
Test.hs:60:18:
Couldn't match expected type `m n1 ()'
against inferred type `Typ (NM mg n)'
NB: `Typ' is a type function, and may not be injective
In the expression: apply (NM :: NM mg n)
In the definition of `monadicValue'''':
monadicValue''' = apply (NM :: NM mg n)
Failed, modules loaded: none
Cheers,
Edward
More information about the Haskell-Cafe
mailing list