(* ========================================================================= *) (* SUPPORT FOR LAZY EVALUATION *) (* Copyright (c) 2007 Joe Leslie-Hurd, distributed under the BSD License *) (* ========================================================================= *)
structure Lazy :> Lazy = struct
datatype'a thunk =
Value of'a
| Thunk of unit -> 'a;
datatype'a lazy = Lazy of 'a thunk ref;
fun quickly v = Lazy (ref (Value v));
fun delay f = Lazy (ref (Thunk f));
fun force (Lazy s) = case !s of
Value v => v
| Thunk f => let val v = f ()
val () = s := Value v in
v end;
fun memoize f = let val t = delay f in
fn () => force t end;
end
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.