есть тип, реализованный как множество. для произвольного множества есть общий набор операций, а для 1-элементного множества есть дополнительные особые операции. но чтобы эти операции очетить типами, нужно, чтобы один тип входил в другой. условно Some One ⊂ Some n
ненужные детали: у простой сущности есть адрес, на неё можно сослаться, а у мультисущности нет адреса, нельзя сослаться.
data Some n a where One :: a -> Some One a Many :: [a] -> Some Many a data Some_ a = forall n. Some_ (Some n a) вот это всё можно в одном типе записать?
вообще это банальная задача для ООП. как у нас принято подтипы эмулировать?
Не знаю
подтипы это сигмы, экзисты
хм, а вот это, наверно, лучше подойдёт, спасибо
Обсуждают сегодня