История изменений
Исправление qnikst, (текущая версия) :
там был аналог, если что. просто не были явно написаны типы, т.к. они видны из :i Num
а тут ты привел не аналог:
{-# LANGUAGE TypeOperators, TypeFamilies #-}
-- from-library:
data Z
data S n
type family (:+:) a b :: *
type instance (:+:) Z n = n
type instance (:+:) (S m) n = S (m :+: n)
-- /from-library
data Matrix a b = Matrix b
foo :: (Matrix a c) -> (Matrix b c) -> (Matrix (a:+:b) c)
foo = undefined
скоро выйдет 7.8 и там будут включены typelevel-naturals нормальные
Исправление qnikst, :
там был аналог, если что. просто не были явно написаны типы, т.к. они видны из :i Num
а тут ты привел не аналог:
{-# LANGUAGE TypeOperators, TypeFamilies #-}
-- from-library:
data Z
data S n
type family (:+:) a b :: *
type instance (:+:) Z n = n
type instance (:+:) (S m) n = S (m :+: n)
-- /from-library
data Matrix a b = Matrix b
foo :: (Matrix a c) -> (Matrix b c) -> (Matrix (a:+:b) c)
foo = undefined
скоро выйдет 7.8 и там будут включены typelevel-naturals нормальные
Исходная версия qnikst, :
там был аналог если, что просто не были явно написаны типы, т.к. они видны из :i Num
а тут ты привел не аналог:
{-# LANGUAGE TypeOperators, TypeFamilies #-}
-- from-library:
data Z
data S n
type family (:+:) a b :: *
type instance (:+:) Z n = n
type instance (:+:) (S m) n = S (m :+: n)
-- /from-library
data Matrix a b = Matrix b
foo :: (Matrix a c) -> (Matrix b c) -> (Matrix (a:+:b) c)
foo = undefined
скоро выйдет 7.8 и там будут включены typelevel-naturals нормальные