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.
<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>
<eval>(quasiquote ("Hallo" ,name))</eval>
----
'''Aufgabe 5:'''
Ermitteln Sie die Werte der folgenden Scheme-Ausdrucke im Kopf und uberprufen
Sie diese anschlie�end in Scheme.
( + 3 ( * 4 ( - 10 4 ) ) )
...
( * ( - 2 ( + 2 0 ) ) 45 )
...
( + ( * 4 5 ) ( / 4 5 ) )
...
( + ( * 4.0 5.0 ) ( / 4.0 5.0 ) )
...
----
'''Aufgabe 6:'''
Wandeln Sie die folgenden mathematischen Ausdrucke in syntaktisch korrekte
Schemeausdrucke um. Geben Sie diese anschlie�end ein.
(4 � 5) + 100
(9 � (5 3))
(13 1) = (1 + 2)
(6 + (2 � (3 + 12)) =5)
----
'''Aufgabe 7:'''
Notieren Sie die folgenden verbal gegebenen Ausdrucke in Scheme und machen Sie
sich klar, wie deren Evaluation ablauft.
� die Summe der Zahlen 1, 2, 3, 4 und 5
� das Produkt aus 3 und der Summe aus 8 und 9
� die Zeichenkette aus dem Wort \Hallo ", der Verkettung der Buchstaben O,
t, t, o und !
Hinweis: Schlagen Sie im Manual unter string und string-append nach und ermitteln
Sie den Typ der Argumente und des jeweiligen Ruckgabewertes dieser
Prozeduren.
----
'''Aufgabe 8:'''
Stellen Sie die Pradikate zur Typprufung fur Zahlen, Zeichen und Zeichenketten
zusammen. Schlagen Sie in einschlagigen Handbuchern bzw. Dokumentationen,
z.B. R5RS (Scheme Standard), nach. Ein solches Pradikat ist eine einstellige
3
Prozedur, das hei�t eine Prozedur, die genau ein Argument erwartet und einen
Wahrheitswert zuruckgibt. Geben Sie jeweils zwei erprobte Beispiele an.
Beispiel:
> (symbol? 'define)
#t
> (symbol? "define")
#f