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