idris - Data Type Encompassing Two Sum Types? -
given these 2 sum types:
data foo = int | b string data bar = c int | d string i'd define function returns either (foo or bar) string.
so, attempted make:
data higher = foo | bar
but failed compile:
*adt> :r type checking ./adt.idr adt.idr:3:6:main.foo defined adt.idr:4:6:main.bar defined how can create higher data type, consists of foo or bar?
yes can indeed!
data foo = int | b string data bar = c int | d string data higher : type injfoo : foo -> higher injbar : bar -> higher now can injfoo (b "hello") or injbar (c 5).
Comments
Post a Comment