nil [element of] List(Bot) cons [element of] All(X) (X, List (X)) [right arrow] List(X) map [element of] All(X,Y) (List(X), X [right arrow] Y) [right arrow] List(Y) newref [element of] All(X) X [right arrow] Ref(X)
deref [element of] All(X) Ref(X) [right arrow] X update [element of] All(X) Ref (X) [right arrow] X [right arrow] Unit Assuming we are also given integers and arithmetic operators and that the variables l and r have types List(Int) and Ref(Int), we have the following simple examples: