Go backward to Self-Application Go up to Top Go forward to Recursive Definitions |
E ::= ...| LETREC I = E1 IN E2
| IFNULL E1 THEN E2 ELSE E3
E[[IFNULL E1 THEN E2 ELSE E3]] =
lambda e. let x = (E[[E1]]e) in
cases x of
isList(t) -> ((null t) ->
(E[[E2]]e) [] (E[[E3]]e))
otherwise -> inError()
end