fun lazy (f) { local flag = 0, value = 0; return fun () { if flag then return value else value := f (); flag := 1; return value fi } } local l = lazy (fun () {write (1); return 800}); local x = read (); write (l ()); write (l ())