1234567891011121314151617181920212223242526272829303132333435363738(*
include Atomic
*)type'at='arefletmake=refletget=(!)letset=(:=)letexchangernew_value=letold_value=!rinr:=new_value;old_valueletcompare_and_setrseenv=if!r=seenthenbeginr:=v;trueendelsefalseletfetch_and_addrn=letold_value=!rinr:=old_value+n;old_valueletincr=incrletdecr=decrletmake_contended=make