[Haskell-cafe] A Very Simple Type Class Question

Larry Lee llee454 at gmail.com
Tue Nov 11 20:59:50 UTC 2014


Hi

I have a very simple problem.
I have a class and want to define a function in that class that returns 
a different instance of the same class.

I tried accomplishing this as follows:

     class A a where
       f :: A b => a -> b


This fails however when I try to instantiate it. For example:

     instance A String where
       f x = x


I get an error message that makes absolutely no sense to me:

     src/CSVTree.hs:12:9:
         Could not deduce (b ~ [Char])
         from the context (A b)
           bound by the type signature for f :: A b => String -> b
           at src/CSVTree.hs:12:3-9
           `b' is a rigid type variable bound by
               the type signature for f :: A b => String -> b
               at src/CSVTree.hs:12:3
         In the expression: x
         In an equation for `f': f x = x
         In the instance declaration for `A String'
     make: *** [compile] Error 1

Can someone please explain: how I can achieve my goal; and why my code 
is failing; simply and in plain English.

Thanks,
Larry


More information about the Haskell-Cafe mailing list