# HG changeset patch # User wenzelm # Date 1194385835 -3600 # Node ID 8b38b394fa8e77dcbf7a7c7cbd3ee6893a0744f6 # Parent 17c183417f93f1564b984fb7daaacb11d5f8ff48 fixed spelling; tuned; diff -r 17c183417f93 -r 8b38b394fa8e src/Pure/General/susp.ML --- a/src/Pure/General/susp.ML Tue Nov 06 22:50:34 2007 +0100 +++ b/src/Pure/General/susp.ML Tue Nov 06 22:50:35 2007 +0100 @@ -28,19 +28,15 @@ fun delay f = ref (Delay f); -fun force susp = - let - fun forc () = case ! susp - of Value v => v +fun force (ref (Value v)) = v + | force susp = NAMED_CRITICAL "susp" (fn () => + (case ! susp of + Value v => v (*race wrt. parallel force*) | Delay f => let val v = f (); val _ = susp := Value v; - in v end; - in case ! susp - of Value v => v - | Delay _ => NAMED_CRITICAL "sups" forc - end; + in v end)); fun peek susp = (case ! susp of