1
0
Fork 0
doc/devel/format/stylesheet/prim-evaluation.de.tm

149 lines
5.7 KiB
Plaintext
Raw Normal View History

2011-08-28 15:59:50 +08:00
<TeXmacs|1.0.4.2>
<style|tmdoc>
<\body>
<tmdoc-title|Steuerung der Evaluierung>
Dieser Abschnitt beschreibt verschiedene Konstrukte, die steuern, wie
Ausdr<64>cke in der Stil-Definitions-Sprache evaluiert werden. Die Konstrukte
sind Analoga zu den <value|scheme>-Befehlen <verbatim|eval>,
<verbatim|quote>, <verbatim|quasiquote>, <abbr| usw.>, wobei die
<TeXmacs>-Konventionen sich etwas von normalen funktionellen Sprachen wie
<name|Scheme> <hlink|unterscheiden|../../style/design/style-eval.de.tm>.
<\explain>
<explain-macro|eval|expr><explain-synopsis|Evaluierung erzwingen>
<|explain>
Erzeuge Schriftsatz f<>r das Resultat der Evaluierung von <src-arg|expr>.
Dieses Konstrukt wird meist kombiniert mit <markup|quote> oder
<markup|quasiquote>, die die Evaluierung verz<72>gern.
</explain>
<\explain>
<explain-macro|quote|expr><explain-synopsis|verz<72>gerte Evaluierung>
<|explain>
Evaluierung von <explain-macro|quote|expr> liefert <src-arg|expr> zur<75>ck.
Diese Art der verz<72>gerten Evaluierung wir oft zusammen mit <markup|eval>
gebraucht.
</explain>
<\explain>
<explain-macro|quasiquote|expr><explain-synopsis|Substitution mit
verz<72>gerter Evaluierung>
<|explain>
Dies ist eine Variante von <markup|quote>, bei der alle Unter-Ausdr<64>cke
der Form <explain-macro|unquote|subexpr> durch die Evaluierungen von
<src-arg|subexpr> substituiert wurden. So definiert z.B.
<\tm-fragment>
<inactive*|<assign|hello|<quasiquote|<macro|name|<unquote|<localize|Hello>>
<arg|name>.>>>>
</tm-fragment>
ein Makro <markup|hello>, dessen Wert in der aktuellen Sprache ausgegeben
wird. In einem franz<6E>sischen Dokument w<>rde dies <20>quivalent zu
<\tm-fragment>
<inactive*|<assign|hello|<macro|name|Bonjour <arg|name>.>>>
</tm-fragment>
sein.
Beachten Sie bitte, dass es f<>r solche Anwendungsf<73>lle besser ist,
<markup|quasiquote> nicht zu verwenden, denn wenn einfach
<\tm-fragment>
<inactive*|<assign|hello|<macro|name|<localize|Hello> <arg|name>.>>>
</tm-fragment>
verwendet wird, passt sich der Schriftsatz von <inactive*|<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
\RHello'' nur einmal erfolgen muss. Daher kann <markup|quasiquote>
manchmal zur Steigerung der Effizienz eingesetzt werden.
</explain>
<\explain>
<explain-macro|unquote|subexpr><explain-synopsis|Evaluierung zulassen>
<|explain>
Dieses Konstrukt wird meist zusammen mit <markup|quasiquote> und
<markup|quasi> verwendet, um Ausdr<64>cke zu markieren, die evaluiert werden
sollen.
</explain>
<\explain>
<explain-macro|unquote*|subexprs><explain-synopsis|Evaluierung von Listen
zulassen>
<|explain>
Dies <20>hnelt dem <markup|unquote>, nur dass das Argument
<src-arg|subexprs> zu einer Liste von Unter-ausdr<64>cken evaluiert, die in
die Argumente des Elternknotens substituiert werden. So liefert der
Schriftsatz von
<\tm-fragment>
<inactive*|<assign|fun|<xmacro|x|<style-with|src-compact|none|<quasi|<tree|dup|<unquote*|<quote-arg|x>>|<unquote*|<quote-arg|x>>>>>>>>
</tm-fragment>
mit <inactive*|<fun|a|b|c>> folgendes
<\equation*>
<with|fun|<xmacro|x|<quasi|<tree|dup|<unquote*|<quote-arg|x>>|<unquote*|<quote-arg|x>>>>>|<fun|a|b|c>>
</equation*>
</explain>
<\explain>
<explain-macro|quasi|expr><explain-synopsis|Substitution>
<|explain>
Dies ist eine Abk<62>rzung von <explain-macro|eval|<with|font-shape|right|<explain-macro|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
<\tm-fragment>
<inactive*|<assign|new-theorem|<macro|name|text|<quasi|<assign|<unquote|name>|<macro|body|<surround|<no-indent><strong|<unquote|<arg|text>>.
>|<right-flush>|<arg|body>>>>>>>>
</tm-fragment>
Theorem-<2D>hnliche Kontexte erzeugt werden.
</explain>
<\explain>
<explain-macro|quote-value|var><explain-synopsis|nicht evaluierter Wert>
<|explain>
Normalerweise, wenn man den Wert einer Kontextvariablen <src-arg|var>
erfahren m<>chte, ist man an daran interessiert, wie sie im Schriftsatz
erscheint und wie ihn <explain-macro|value|var> erzeugt. Manchmal m<>chte
man den wahren, nicht evaluierten Wert haben, was mit
<explain-macro|quote-value|var> geschehen kann.
</explain>
<\explain>
<explain-macro|quote-arg|var|index-1|<with|mode|math|\<cdots\>>|index-n><explain-synopsis|nicht
evaluiertes Argument>
<|explain>
Normalerweise, wenn man den Wert eines Unter-Ausdrucks eines
Makro-Arguments <src-arg|var> erfahren m<>chte, ist man an daran
interessiert, wie diese im Schriftsatz erscheinen, in eben der Form, die
<explain-macro|arg|var|index-1|<with|mode|math|\<cdots\>>|index-n>
erzeugt. Manchmal m<>chte man die wahren, nicht evaluierten Werte haben,
was mit<explain-macro|quote-arg|var|index-1|<with|mode|math|\<cdots\>>|index-n>
geschehen kann.
</explain>
<tmdoc-copyright|2004|Joris van der Hoeven>
<tmdoc-license|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".>
</body>
<\initial>
<\collection>
<associate|language|german>
</collection>
</initial>