adamc@590: fun getOpt (t ::: Type) (o : option t) (v : t) : t = adamc@590: case o of adamc@590: None => v adamc@590: | Some x => x adamc@590: adamc@591: cookie int : int adamc@591: cookie float : float adamc@592: cookie string : string adamc@592: cookie bool : bool adamc@593: cookie pair : int * float adamc@591: adamc@590: fun main () : transaction page = adamc@590: n <- getCookie int; adamc@591: n <- return (getOpt n 7); adamc@591: sn <- source 6; adamc@591: adamc@591: f <- getCookie float; adamc@591: f <- return (getOpt f 1.23); adamc@591: sf <- source 4.56; adamc@591: adamc@592: s <- getCookie string; adamc@592: s <- return (getOpt s "Hi"); adamc@592: ss <- source "Bye"; adamc@592: adamc@592: b <- getCookie bool; adamc@592: b <- return (getOpt b True); adamc@592: sb <- source False; adamc@592: adamc@593: p <- getCookie pair; adamc@593: p <- return (getOpt p (1, 2.3)); adamc@593: sp <- source (4, 5.6); adamc@593: adamc@590: return adamc@590: {[n]}}/> adamc@591: CHANGE
adamc@591: adamc@591: {[f]}}/> adamc@591: CHANGE
adamc@592: adamc@592: {[s]}}/> adamc@592: CHANGE
adamc@592: adamc@592: {[b]}}/> adamc@592: CHANGE
adamc@593: adamc@593: {[p.1]}, {[p.2]}}/> adamc@593: CHANGE
adamc@590: