where t* is the type of lists whose members have type
t. Introduce appropriate value constructor and discriminator
expressions and extend the development of Chapter 1.
Give appropriate rules for evaluation and typing.
Extend the notion of value.
Extend the proof of value soundness (Theorem 2.1).
Extend the proof of type preservation (Theorem 2.5).
Explore an alternative operational semantics in which expressions that are
known to be values (since they have been evaluated) are not evaluated again.
State and prove in which way the new semantics is equivalent to the one given
in Section 2.3. Hint: It may be necessary to extend the language of
expressions or explicitly separate the language of values from the
language of expressions.
Prove that v Value is derivable if and only if
v evaluates to v. That is, values are exactly those
expressions which evaluate to themselves.