% Cells declare Toggle = {NewCell true} Toggle := {Not @Toggle} {Browse Toggle} {Browse @Toggle} % Objects declare local V in V = {NewCell true} fun {Flip} V := {Not @V} @V end fun {Value} @V end end _ = {Flip} _ = {Flip} {Browse {Value}} % Classes (see section 1.14) declare fun {NewToggle} V Flip Value in V = {NewCell true} fun {Flip} V := {Not @V} @V end fun {Value} @V end toggle(flip:Flip value:Value) end declare T1 = {NewToggle} T2 = {NewToggle} _ = if {T1.value} then {T2.flip} else {T1.flip} end {Browse {T2.value}} {Browse {T1.value}} % Nondeterminsm and time (see MovingAverage.oz) declare C = {NewCell 0} thread C := 1 end thread C := 2 end {Delay 30} {Browse @C} declare C = {NewCell 0} thread I in I = @C C := I+1 end thread J in J = @C C := J+1 end