| | |
Summary: Initial Type Assumption A0
A0(x) = a. a for all x V
A0(c) = pre-defined type schema in haskell, for all c C0
A0(constr) = (type1
. . . typen
(tyconstr a1 . . . am)),
A0(bot) = a. a
A0(if) = a. Bool a a a
A0(fix) = a. (a a) a
A0(isaconstr) = ((tyconstr a1 . . . am) -> Bool)
A0(argofconstr) = ((tyconstr a1 . . . am) -> (type1
, . . . , typen
))
A0(isan-tuple) = a1 . . . an. (a1, . . . , an) Bool
A0(seln,i) = a1 . . . an. (a1, . . . , an) ai
A0(tuplen) = a1 . . . an. a1 . . . an (a1, . . . , an)
Here, constr is introduced by the declaration
data tyconstr a1 . . . am = . . . |constr type1
. . . typen
| . . .
|