к
Size: a a a
AP
[
AP
ЖК
class Foo a whereПочему жалуется, что "expected q, got n" в строке
type FooType a q
foo :: a -> FooType a q
instance Num n => Foo [x] where
type FooType [x] g = g
foo xs = fromIntegral $ length xs :: FooType [x] n
foo xs = fromIntegral $ length xs :: FooType [x] ntype FooType [x] n = n тоже не робит.[
GP
IO
foo должна возвращать FooType a q для любого q, а вы возвращаете из нее FooType a n для вполне конкретного n. Вы видимо хотели с помощью Num n => повесить констрейнт на q, но это просто создало новую типопеременную n, никак не связанную с q, вот типы и не совпадают. В instance head вообще невозможно повесить констрент на типопеременную которая не упоминается в самом классе, а только в его методах (ну кроме всяких ConstraintKinds).MK
MK
MK
[
