Na życzenie Dawida dodałem makro <->
mutable a <- 1;
mutable b <- 2;
a <-> b;
assert (a == 2);
assert (b == 1);
a lock znalazłem w specyfikacji C#, którą przekleiłem jako treść makra...:
macro @lock (x, body)
syntax ("lock", "(", x, ")", body)
{
<[
System.Threading.Monitor.Enter ($x);
try
$body
finally
System.Threading.Monitor.Exit ($x);
]>
}