fun add x = let fun add' y = x + y in add' 1 + add' 2 end fun f (x : int) = let fun page () = return {[x]} in page end fun f (x : int) = let fun page1 () = return {[x]} and page2 () = case Some True of Some r => return {[r]} | _ => return Error in page2 end fun f (x : int) = let fun page1 () = return {[x]} and page2 () = case Some True of Some r => return {[r]} | _ => return !! and page3 () = return !! ! in page3 end fun add2 (x : int) (y : int) = let fun add3 () = x + y in add3 end fun add3 (x : int) = let fun add2 (y : int) = let fun add1 (z : int) = x + y + z in add1 end in add2 end (*datatype list t = Nil | Cons of t * list t fun length (t ::: Type) (ls : list t) = let fun length' ls acc = case ls of Nil => acc | Cons (_, ls') => length' ls' (acc + 1) in length' ls 0 end *)