# HG changeset patch # User haftmann # Date 1222327687 -7200 # Node ID 46a0dc9b51bb99e224433c91cd34b8f7ed364aee # Parent 4f2406ddd9ea64e97884ab8111f566a895a4a953 map_force diff -r 4f2406ddd9ea -r 46a0dc9b51bb src/Pure/General/susp.ML --- a/src/Pure/General/susp.ML Thu Sep 25 09:28:06 2008 +0200 +++ b/src/Pure/General/susp.ML Thu Sep 25 09:28:07 2008 +0200 @@ -11,6 +11,7 @@ val value: 'a -> 'a T val delay: (unit -> 'a) -> 'a T val force: 'a T -> 'a + val map_force: ('a -> 'a) -> 'a T -> 'a T val peek: 'a T -> 'a option val same: 'a T * 'a T -> bool end @@ -38,10 +39,10 @@ val _ = susp := Value v; in v end)); -fun peek susp = - (case ! susp of - Value v => SOME v - | Delay _ => NONE); +fun map_force f = value o f o force; + +fun peek (ref (Value v)) = SOME v + | peek (ref (Delay _)) = NONE; fun same (r1 : 'a T, r2) = (r1 = r2); (*equality on references*)