Kommunikation mit Scheme
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Scheme</language>
Im Hintergrund der Arbeitsblätter, die Sie hier verwenden werden, arbeitet ein Scheme-Interpreter. Sie können mit ihm in direkten Dialog treten, indem Sie die entsprechenden Ausdrücke von diesem Interpreter evaluieren lassen: <tt>speichern & ausführen</tt>.
===Aufgabe 1:===
Sagen Sie die jeweilige Antwort des Interpreters vorher. Vergleichen Sie anschließend die Antworten des Scheme-Systems mit Ihren Vorhersagen.<br/>
Hinweis: die Zahlen (<tt>number</tt>) werden nicht nur "nachgeplappert".
Sollten Sie nach einiger Überlegung die Antwort trotzdem nicht nachvollziehen können, schauen Sie ins Manual. Alternativ können
Sie auch den Help Desk von DrScheme verwenden.
{| cellspacing=10 cellpadding=3
|-
| <eval>4</eval> || <eval>12345</eval> || <eval>0.8439</eval>
|-
| <eval>-.590</eval> || <eval>-0</eval> || <eval>7/3</eval>
|-
| <eval>24/3</eval> || <eval>9e-8</eval> || <eval>#b1101</eval>
|-
| <eval>#x1001</eval>
|}
===Aufgabe 2:===
In dieser Aufgabe geht es wieder um die Scheme-Antworten, genauer, um den REPL. Übernehmen Sie die Aufgabenstellung von oben und wenden Sie sie auf Symbole (<tt>symbol</tt>) an. Klären Sie die Ursache und Bedeutung eventueller Fehlermeldungen!
<eval>Hi Scheme</eval>
<eval>pi</eval>
<eval>*</eval>
<eval>sqrt</eval>
<eval>sin</eval>
<eval>#t</eval>
<eval>#f</eval>
===Aufgabe 3:===
Erschließen bzw. wiederholen Sie die Bedeutung des einfachen Hochkommas (<tt>quote</tt>, auf der Taste mit der Raute) für die Evaluation eines Schemeausdrucks. Geben Sie folgende Ausdrücke ein und vergleichen Sie die Ausgaben mit den vorherigen (ohne <tt>quote</tt>).
<eval>'Hi Scheme</eval>
<eval>'pi</eval>
<eval>'*</eval>
<eval>'sqrt</eval>
<eval>'sin</eval>
<eval>'#t</eval>
<eval>'#f</eval>
===Aufgabe 4:===
Sehen Sie sich die folgenden beiden Ausdrücke an und überlegen Sie sich die potenzielle Antwort des Interpreters. Worin liegt der entscheidende Unterschied zwischen den beiden Ausdrücken hinsichtlich ihrer Evaluation?
Hinweis: Nutzen Sie den Help-Desk von DrScheme, wenn Ihnen die Bedeutungen von <tt>quote</tt>, <tt>quasiquote</tt> und <tt>unquote</tt> unklar sein sollten.
<eval>(quote ("Hallo" ,name))</eval>
Im Hintergrund wurde <tt>name</tt> mit der Zeichenkette <tt>"Paul"</tt> verknüpft.
<code hidden>(define name "Paul")</code>
<eval>(quasiquote ("Hallo" ,name))</eval>
===Aufgabe 5:===
Ermitteln Sie die Werte der folgenden Scheme-Ausdrücke im Kopf und überprüfen Sie diese anschließend in Scheme.
<eval>( + 3 ( * 4 ( - 10 4 ) ) )</eval>
<eval>( * ( - 2 ( + 2 0 ) ) 45 )</eval>
<eval>( + ( * 4 5 ) ( / 4 5 ) )</eval>
<eval>( + ( * 4.0 5.0 ) ( / 4.0 5.0 ) )</eval>
===Aufgabe 6:===
Wandeln Sie die folgenden mathematischen Ausdrücke in syntaktisch korrekte Schemeausdrücke um. Geben Sie diese anschließend ein.<br/>
(4 * 5) + 100
<eval></eval>
(9 * (5 - 3))
<eval></eval>
(13 - 1) / (1 + 2)
<eval></eval>
(6 + (2 * (3 + 12)) / 5)
<eval></eval>
===Aufgabe 7:===
Notieren Sie die folgenden verbal gegebenen Ausdrücke in Scheme und machen Sie sich klar, wie deren Evaluation abläuft.
* die Summe der Zahlen 1, 2, 3, 4 und 5
<eval></eval>
* das Produkt aus 3 und der Summe aus 8 und 9
<eval></eval>
* die Zeichenkette aus dem Wort <tt>"Hallo "</tt>, der Verkettung der Buchstaben <tt>O</tt>, <tt>t</tt>, <tt>t</tt>, <tt>o</tt> und <tt>!</tt>. <br/>
''Hinweis'': Schlagen Sie im Manual unter <tt>string</tt> und <tt>string-append</tt> nach und ermitteln Sie den Typ der Argumente und des jeweiligen Rückgabewertes dieser Prozeduren.
===Aufgabe 8:===
Stellen Sie die Prädikate zur Typprüfung für Zahlen, Zeichen und Zeichenketten zusammen. Schlagen Sie in einschlägigen Manualen bzw. Dokumentationen, z.B. R5RS (Scheme Standard), nach. Unter einem Prädikat verstehen wir hier ein Scheme-Sprachelement, das genau eine Eingabe erwartet und einen Wahrheitswert zurückgibt. Geben Sie jeweils zwei erprobte Beispiele an.
<eval>(symbol? 'define)</eval>
<eval>(symbol? "define")</eval>