Учитывая эти 2 типа суммы:
data Foo = A Int | B String
data Bar = C Int | D String
Я хотел бы определить функцию, которая возвращает Either (Foo or Bar) String
.
Итак, я попытался сделать:
data Higher = Foo | Bar
Но не удалось скомпилировать:
*ADT> :r
Type checking ./ADT.idr
ADT.idr:3:6:Main.Foo is already defined
ADT.idr:4:6:Main.Bar is already defined
Как создать тип данных Higher
, состоящий из Foo
или Bar
?
Either (Either Foo Bar) String
? - person xash   schedule 22.04.2016