| author | wenzelm |
| Sat, 16 Apr 2011 20:49:48 +0200 | |
| changeset 42368 | 3b8498ac2314 |
| parent 35014 | a725ff6ead26 |
| permissions | -rw-r--r-- |
(* Title: Pure/Concurrent/single_assignment_sequential.ML Author: Makarius Single-assignment variables (sequential version). *) structure Single_Assignment: SINGLE_ASSIGNMENT = struct abstype 'a var = Var of 'a SingleAssignment.saref with fun var _ = Var (SingleAssignment.saref ()); fun peek (Var var) = SingleAssignment.savalue var; fun await v = (case peek v of SOME x => x | NONE => Thread.unavailable ()); fun assign (v as Var var) x = (case peek v of SOME _ => raise Fail "Duplicate assignment to variable" | NONE => SingleAssignment.saset (var, x)); end; end;