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