Steuerung der Evaluierung

Dieser Abschnitt beschreibt verschiedene Konstrukte, die steuern, wie Ausdrücke in der Stil-Definitions-Sprache evaluiert werden. Die Konstrukte sind Analoga zu den Scheme-Befehlen eval, quote, quasiquote, usw., wobei die TeXmacs-Konventionen sich etwas von normalen funktionellen Sprachen wie Scheme unterscheiden.

<eval|expr>
(Evaluierung erzwingen)

Erzeuge Schriftsatz für das Resultat der Evaluierung von expr. Dieses Konstrukt wird meist kombiniert mit quote oder quasiquote, die die Evaluierung verzögern.

<quote|expr>
(verzögerte Evaluierung)

Evaluierung von <quote|expr> liefert expr zurück. Diese Art der verzögerten Evaluierung wir oft zusammen mit eval gebraucht.

<quasiquote|expr>
(Substitution mit verzögerter Evaluierung)

Dies ist eine Variante von quote, bei der alle Unter-Ausdrücke der Form <unquote|subexpr> durch die Evaluierungen von subexpr substituiert wurden. So definiert z.B.

<assign|hello|<quasiquote|<macro|name|<unquote|<localize|Hello>> name.>>>

ein Makro hello, dessen Wert in der aktuellen Sprache ausgegeben wird. In einem französischen Dokument würde dies äquivalent zu

<assign|hello|<macro|name|Bonjour name.>>

sein.

Beachten Sie bitte, dass es für solche Anwendungsfälle besser ist, quasiquote nicht zu verwenden, denn wenn einfach

<assign|hello|<macro|name|<localize|Hello> name.>>

verwendet wird, passt sich der Schriftsatz von <hello|Name> automatisch der Sprache an, während in obigen Version immer die Sprache verwendet werden, die bei der Makrodefinition aktuell war. Dennoch hat die Verwendung von quasiquote den Vorteil, dass die Sprachanpassung von „Hello” nur einmal erfolgen muss. Daher kann quasiquote manchmal zur Steigerung der Effizienz eingesetzt werden.

<unquote|subexpr>
(Evaluierung zulassen)

Dieses Konstrukt wird meist zusammen mit quasiquote und quasi verwendet, um Ausdrücke zu markieren, die evaluiert werden sollen.

<unquote*|subexprs>
(Evaluierung von Listen zulassen)

Dies ähnelt dem unquote, nur dass das Argument subexprs zu einer Liste von Unter-ausdrücken evaluiert, die in die Argumente des Elternknotens substituiert werden. So liefert der Schriftsatz von

< assign | fun | < xmacro | x |

<\quasi|

<tree|dup|<unquote*|<quote-arg|x>>|<unquote*|<quote-arg|x>>>

>

> >

mit <fun|a|b|c> folgendes

<quasi|expr>
(Substitution)

Dies ist eine Abkürzung von <eval|<quasiquote|expr>>. Dieses Konstrukt wird oft in TeXmacs-Stil-Definitionen verwendet, Makros zu schreiben, die eine Liste von Makros definieren. So können mit dem Makro

<assign|new-theorem|<macro|name|text|<quasi|<assign|<unquote|name>|<macro|body|<surround|<no-indent><strong|<unquote|text>. >|<right-flush>|body>>>>>>

Theorem-ähnliche Kontexte erzeugt werden.

<quote-value|var>
(nicht evaluierter Wert)

Normalerweise, wenn man den Wert einer Kontextvariablen var erfahren möchte, ist man an daran interessiert, wie sie im Schriftsatz erscheint und wie ihn <value|var> erzeugt. Manchmal möchte man den wahren, nicht evaluierten Wert haben, was mit <quote-value|var> geschehen kann.

<quote-arg|var|index-1||index-n>
(nicht evaluiertes Argument)

Normalerweise, wenn man den Wert eines Unter-Ausdrucks eines Makro-Arguments var erfahren möchte, ist man an daran interessiert, wie diese im Schriftsatz erscheinen, in eben der Form, die <arg|var|index-1||index-n> erzeugt. Manchmal möchte man die wahren, nicht evaluierten Werte haben, was mit<quote-arg|var|index-1||index-n> geschehen kann.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".