LINUX.ORG.RU

История изменений

Исправление 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 нормальные