Hi Folks,

Total newbie here. I don't know if I am having a syntactic problem or a conceptual problem.

This code:

data Test = Test

data Test2 = Test2

class MyClass a where
    getChild :: (MyClass b) => a -> b

instance MyClass Test where
    getChild = Test2

instance MyClass Test2 where
    getChild = Test

results in:

[1 of 1] Compiling Main             ( test.hs, interpreted )

test.hs:10:15:
    Couldn't match expected type `Test -> b'
           against inferred type `Test2'
    In the expression: Test2
    In the definition of `getChild': getChild = Test2
    In the instance declaration for `MyClass Test'

test.hs:13:15:
    Couldn't match expected type `Test2 -> b'
           against inferred type `Test'
    In the expression: Test
    In the definition of `getChild': getChild = Test
    In the instance declaration for `MyClass Test2'
Failed, modules loaded: none.

Is this a reasonable thing to try and do in Haskell? If not, I have a lot more questions... ;)

many thanks,

David