[Haskell-cafe] Deduce problem.

Magicloud Magiclouds magicloud.magiclouds at gmail.com
Thu Nov 17 05:54:41 CET 2011


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 <miguelimo38 at 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 at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>



-- 
竹密岂妨流水过
山高哪阻野云飞



More information about the Haskell-Cafe mailing list