equal
deleted
inserted
replaced
72 val forall: ('a -> bool) -> 'a list -> bool |
72 val forall: ('a -> bool) -> 'a list -> bool |
73 val set: bool ref -> bool |
73 val set: bool ref -> bool |
74 val reset: bool ref -> bool |
74 val reset: bool ref -> bool |
75 val toggle: bool ref -> bool |
75 val toggle: bool ref -> bool |
76 val change: 'a ref -> ('a -> 'a) -> unit |
76 val change: 'a ref -> ('a -> 'a) -> unit |
|
77 val setmp_noncritical: 'a ref -> 'a -> ('b -> 'c) -> 'b -> 'c |
77 val setmp: 'a ref -> 'a -> ('b -> 'c) -> 'b -> 'c |
78 val setmp: 'a ref -> 'a -> ('b -> 'c) -> 'b -> 'c |
78 |
79 |
79 (*lists*) |
80 (*lists*) |
80 exception UnequalLengths |
81 exception UnequalLengths |
81 val single: 'a -> 'a list |
82 val single: 'a -> 'a list |
364 fun toggle flag = (flag := not (! flag); ! flag); |
365 fun toggle flag = (flag := not (! flag); ! flag); |
365 |
366 |
366 fun change r f = r := f (! r); |
367 fun change r f = r := f (! r); |
367 |
368 |
368 (*temporarily set flag during execution*) |
369 (*temporarily set flag during execution*) |
369 fun setmp flag value f x = |
370 fun setmp_noncritical flag value f x = |
370 let |
371 let |
371 val orig_value = ! flag; |
372 val orig_value = ! flag; |
372 val _ = flag := value; |
373 val _ = flag := value; |
373 val result = capture f x; |
374 val result = capture f x; |
374 val _ = flag := orig_value; |
375 val _ = flag := orig_value; |
375 in release result end; |
376 in release result end; |
|
377 |
|
378 fun setmp flag value f x = CRITICAL (fn () => setmp_noncritical flag value f x); |
376 |
379 |
377 |
380 |
378 |
381 |
379 (** lists **) |
382 (** lists **) |
380 |
383 |