I think this is where I did not understand from the very beginning. If the the declaration was correct, then why cannot b be H? Referring to Data.List.genericLength, I was confused.
On Thu, Nov 17, 2011 at 12:34 PM, MigMit <miguelim...@yandex.ru> wrote: > You've declared "from" as forall b. Test -> [b], but you're trying to > implement it as Test -> H. > > On 17 Nov 2011, at 07:48, Magicloud Magiclouds wrote: > >> Hi, >> Consider I have declarations like this: >> class (ClassA a) => ClassC a where >> from :: (ClassB b) => a -> [b] >> to :: (ClassB c) => a -> [c] >> >> data H = ... >> >> instance ClassB H where >> ... >> >> data Test = Test { m :: H } >> instance ClassA Test where >> ... >> instance ClassC Test where >> from = m >> to = m >> >> Well, I got "could not deduce" error here at "from = m" and "to = >> m". `c' is a rigid type variable bound by the type signature for to :: >> ClassB c => Test -> [c]. >> Referring to some similar questions on internet, I should remove the >> (ClassB c) thing. Is this the only solution? >> -- >> 竹密岂妨流水过 >> 山高哪阻野云飞 >> >> _______________________________________________ >> Haskell-Cafe mailing list >> Haskell-Cafe@haskell.org >> http://www.haskell.org/mailman/listinfo/haskell-cafe > > -- 竹密岂妨流水过 山高哪阻野云飞 _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe