к
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] n
type 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
[