194 |
|
|
195 |
val boolList = list(?bool, fn Ubool t => t, fn UboolList t => t, UboolList) |
val boolList = list(?bool, fn Ubool t => t, fn UboolList t => t, UboolList) |
196 |
|
|
197 |
fun lvar #"x" = R.int (%Ulvar) |
val lvar = R.int |
198 |
| lvar _ = raise Fail " | lvar" |
val lvarList = list (fn f => R.int(f o Ulvar), |
199 |
|
fn Ulvar v => v, |
200 |
val lvarList = list (?lvar, fn Ulvar v => v, fn UlvarList l => l, UlvarList) |
fn UlvarList l => l, |
201 |
|
UlvarList) |
202 |
|
|
203 |
fun numkind #"I" = R.int(fn i => %Unumkind(P.INT i)) |
fun numkind #"I" = R.int(fn i => %Unumkind(P.INT i)) |
204 |
| numkind #"U" = R.int(fn i => %Unumkind(P.UINT i)) |
| numkind #"U" = R.int(fn i => %Unumkind(P.UINT i)) |
430 |
and tyc #"A" = R.int (fn i => R.int (fn j => |
and tyc #"A" = R.int (fn i => R.int (fn j => |
431 |
%Utyc (LT.tcc_var (DI.di_fromint i, j)))) |
%Utyc (LT.tcc_var (DI.di_fromint i, j)))) |
432 |
| tyc #"B" = R.int (fn v => |
| tyc #"B" = R.int (fn v => |
433 |
R.int (fn d => |
%Utyc (LT.tcc_nvar v)) |
|
R.int (fn i => |
|
|
%Utyc (LT.tcc_nvar v)))) |
|
434 |
| tyc #"C" = R.int (fn k => %Utyc (LT.tcc_prim (PT.pt_fromint k))) |
| tyc #"C" = R.int (fn k => %Utyc (LT.tcc_prim (PT.pt_fromint k))) |
435 |
| tyc #"D" = ?tkindList (fn UtkindList ks => |
| tyc #"D" = ?tkindList (fn UtkindList ks => |
436 |
?tyc (fn Utyc tc => %Utyc(LT.tcc_fn(ks, tc)))) |
?tyc (fn Utyc tc => %Utyc(LT.tcc_fn(ks, tc)))) |
492 |
fn UtycsLvarPairList t => t, UtycsLvarPairList) x |
fn UtycsLvarPairList t => t, UtycsLvarPairList) x |
493 |
|
|
494 |
fun con #"." = ?dcon (fn Udcon (dc, ts) => |
fun con #"." = ?dcon (fn Udcon (dc, ts) => |
495 |
?lvar (fn Ulvar v => |
lvar (fn v => |
496 |
?lexp (fn Ulexp e => |
?lexp (fn Ulexp e => |
497 |
%Ucon (F.DATAcon (dc, ts, v), e)))) |
%Ucon (F.DATAcon (dc, ts, v), e)))) |
498 |
| con #"," = R.int (fn i => |
| con #"," = R.int (fn i => |
579 |
%Ulexp (F.SWITCH (v, crl, cel, eo)))))) |
%Ulexp (F.SWITCH (v, crl, cel, eo)))))) |
580 |
| lexp #"q" = ?dcon (fn Udcon (c, ts) => |
| lexp #"q" = ?dcon (fn Udcon (c, ts) => |
581 |
?value (fn Uvalue u => |
?value (fn Uvalue u => |
582 |
?lvar (fn Ulvar v => |
lvar (fn v => |
583 |
?lexp (fn Ulexp e => |
?lexp (fn Ulexp e => |
584 |
%Ulexp (F.CON (c, ts, u, v,e )))))) |
%Ulexp (F.CON (c, ts, u, v,e )))))) |
585 |
| lexp #"r" = ?rkind (fn Urkind rk => |
| lexp #"r" = ?rkind (fn Urkind rk => |
586 |
?valueList (fn UvalueList vl => |
?valueList (fn UvalueList vl => |
587 |
?lvar (fn Ulvar v => |
lvar (fn v => |
588 |
?lexp (fn Ulexp e => |
?lexp (fn Ulexp e => |
589 |
%Ulexp (F.RECORD(rk, vl, v, e)))))) |
%Ulexp (F.RECORD(rk, vl, v, e)))))) |
590 |
| lexp #"s" = ?value (fn Uvalue u => |
| lexp #"s" = ?value (fn Uvalue u => |
591 |
R.int (fn i => |
R.int (fn i => |
592 |
?lvar (fn Ulvar v => |
lvar (fn v => |
593 |
?lexp (fn Ulexp e => |
?lexp (fn Ulexp e => |
594 |
%Ulexp (F.SELECT(u, i, v, e)))))) |
%Ulexp (F.SELECT(u, i, v, e)))))) |
595 |
| lexp #"t" = ?value (fn Uvalue v => |
| lexp #"t" = ?value (fn Uvalue v => |
605 |
%Ulexp (F.BRANCH(p, vs, e1, e2)))))) |
%Ulexp (F.BRANCH(p, vs, e1, e2)))))) |
606 |
| lexp #"w" = ?fprim (fn Ufprim p => |
| lexp #"w" = ?fprim (fn Ufprim p => |
607 |
?valueList (fn UvalueList vs => |
?valueList (fn UvalueList vs => |
608 |
?lvar (fn Ulvar v => |
lvar (fn v => |
609 |
?lexp (fn Ulexp e => |
?lexp (fn Ulexp e => |
610 |
%Ulexp (F.PRIMOP(p, vs, v, e)))))) |
%Ulexp (F.PRIMOP(p, vs, v, e)))))) |
611 |
| lexp _ = raise Fail " | lexp" |
| lexp _ = raise Fail " | lexp" |
619 |
| lexpOption _ = raise Fail " | lexpOption" |
| lexpOption _ = raise Fail " | lexpOption" |
620 |
|
|
621 |
and fundec #"0" = ?fkind (fn Ufkind fk => |
and fundec #"0" = ?fkind (fn Ufkind fk => |
622 |
?lvar (fn Ulvar v => |
lvar (fn v => |
623 |
?lvarLtyPairList (fn UlvarLtyPairList vts => |
?lvarLtyPairList (fn UlvarLtyPairList vts => |
624 |
?lexp (fn Ulexp e => |
?lexp (fn Ulexp e => |
625 |
%Ufundec (fk, v, vts, e))))) |
%Ufundec (fk, v, vts, e))))) |
633 |
list (?fundec, fn Ufundec x => x, fn UfundecList l => l, |
list (?fundec, fn Ufundec x => x, fn UfundecList l => l, |
634 |
UfundecList) x |
UfundecList) x |
635 |
|
|
636 |
and lvarLtyPair #"T" = ?lvar (fn Ulvar v => |
and lvarLtyPair #"T" = lvar (fn v => |
637 |
?lty (fn Ulty t => %UlvarLtyPair (v, t))) |
?lty (fn Ulty t => %UlvarLtyPair (v, t))) |
638 |
| lvarLtyPair _ = raise Fail " | lvarLtyPair" |
| lvarLtyPair _ = raise Fail " | lvarLtyPair" |
639 |
|
|
641 |
list (?lvarLtyPair, fn UlvarLtyPair x => x, fn UlvarLtyPairList l => l, |
list (?lvarLtyPair, fn UlvarLtyPair x => x, fn UlvarLtyPairList l => l, |
642 |
UlvarLtyPairList) x |
UlvarLtyPairList) x |
643 |
|
|
644 |
and tvarTkPair #"T" = ?lvar (fn Ulvar tv => |
and tvarTkPair #"T" = lvar (fn tv => |
645 |
?tkind (fn Utkind tk => %UtvarTkPair (tv, tk))) |
?tkind (fn Utkind tk => %UtvarTkPair (tv, tk))) |
646 |
| tvarTkPair _ = raise Fail " | tvarTkPair" |
| tvarTkPair _ = raise Fail " | tvarTkPair" |
647 |
|
|
649 |
list (?tvarTkPair, fn UtvarTkPair x => x, fn UtvarTkPairList l => l, |
list (?tvarTkPair, fn UtvarTkPair x => x, fn UtvarTkPairList l => l, |
650 |
UtvarTkPairList) x |
UtvarTkPairList) x |
651 |
|
|
652 |
and tfundec #"0" = ?lvar (fn Ulvar v => |
and tfundec #"1" = lvar (fn v => |
653 |
?tvarTkPairList (fn UtvarTkPairList tvks => |
?tvarTkPairList (fn UtvarTkPairList tvks => |
654 |
?lexp (fn Ulexp e => |
?lexp (fn Ulexp e => |
655 |
%Utfundec (v, tvks, e)))) |
%Utfundec (v, tvks, e)))) |