at

Die Funktion at erwartet zwei Argumente, einen Ort und eine nahezu beliebige S-Expression.

Beide Argumente werden ausgewertet, das zweite Argument jedoch am angegebenen, in der Regel entfernten, Ort. Das Ergebnis der entfernten Auswertung wird als Resultat des Funktionsaufrufs geliefert. Wird anstelle eines Orts nil als erstes Argument verwendet, erfolgt die Auswertung des zweiten Arguments lokal.

Eine Liste bekannter Orte kann über die Funktion get-places erhalten werden.

Bei einer entfernten Auswertung werden sowohl der auszuwertende Ausdruck als auch die aktuelle Umgebung (Symbole und ihre Werte) an einen Service an einem entfernten Ort übergeben. Der Service sendet das Resultat der Auswertung zurück.

Sollte der Service während der laufenden Auswertung unverfügbar werden (z.B. wenn der Service gestoppt wird oder keine Netzwerkverbindung mehr besteht), wird diese Situation erkannt (siehe get-places). Der Aufruf von at kehrt dann mit einer Ausnahme zurück.

Derzeit werden Kanäle (siehe Kanal), Sperren (siehe Sperre) und Futures (siehe Future) nicht vom Transportprotokoll unterstützt. Das heißt, dass Werte dieser Typen nicht im auszuwertenden Ausdruck, der aktuellen Umgebung oder dem Resultat auftreten dürfen. Das Transportprotokoll schränkt aus Gründen der Sicherheit außerdem die Nachrichtengröße ein.


> (at (first (or (get-places) (list nil))) (+ 2 3 4))
9