Scoping < Scheme < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 13:16 Do 08.11.2007 | Autor: | Igor1 |
Aufgabe | Gegeben sei folgende Prozedur:
(define (specialfunction a b)
(cond
((> a 10) (local
((define b 13 )
(define (specialfunction a c)
(+ a b c)))
(specialfunktion a b )))
((< b 20) (local
(( define b 42 )) (* a b)))
(else (local
((define a (+ b -7))) a))))
Überlegen Sie , welche Variablen frei und welche gebunden sind. Versuchen Sie die Auswertung der Prozedur nachzuvollziehen. Wie lautet die Auswertung für folgende Aufrufe?
|
Hallo,
ich habe eine Frage zum ersten Teil. bestimmen , welche Variablen sind frei und welche gebunden sind. Wie kann man sich das leichter merken?Bzw. was bedeuten diese Begriffe einfach ausgedrückt? Ich habe in wikipedia auf die Prädikatenlogik in diesem Zusammenhang gestolpert. Es hat mir nicht wirklich weiter geholfen.
Denn auf den ersten Blick sind da so viele Variablen und mehrere Funktionen bzw. Definitionen . Ich blicke hier nicht durch.
Und noch eine wichtige Frage wäre: Kann man in wenigen Wörtern klarer ausdrücken, wofür man die local-Prozedur benötigt .Ich habe gelesen, dass es zwischen verschiedenen Prozeduren Interaktionsprobleme gibt und dass eine Variable mit einem bestimmten Namen nicht bei der anderen Prozedur mit demselben Namen auftreten darf, da derselbe Name einer Prozedur kann eine andere Bedeutung der anderen Prozedur haben . Stimmt es? Und man verwendet local, um bestimmte Namen unabhängig von den anderen Prozeduren zu machen. Stimmt es?
Vielen Dank für Eure Hilfe
Igor
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 13:26 Fr 09.11.2007 | Autor: | Igor1 |
Ich versuche anzugeben, welche Variablen frei und welche gebunden sind:
in der 1 Zeile a und b gebunden
......... 3.........a gebunden
4 b gebunden
5 a c gebunden
6 a und c gebunden b frei
7 a b gebunden
8 b gebunden
9 b gebunden
10 b gebunden
11 a frei b gebunden
13 a gebunden b frei a gebunden.
Ich bin mir gar nicht sicher , ob das stimmt.
Ich bitte um eine Korrektur. Kann mir bitte jemand erklären, was die freien und was die gebundenen Variablen sind (bzw. in diesem Kontext)?
|
|
|
|
|
Hallo,
für mich sieht das ziemlich richtig aus, aber ich bin nur ein Laie. Allerdings hast du ein b zuviel, wie mir scheint, sonst müssten drei Zeilen mit je einem b aufeinanderfolgen.
Vielleicht hilft dir das weiter: Funktionen als Argumente und Resultate von Rechenvorschriften und PROZEDURALE ABSTRAKTION. Dort jeweils nach "gebunden" suchen.
Was die lokalen Definitionen angeht: Die Definitionen im Inneren verschatten die Definitionen außerhalb des lokalen Blocks. Das kann nützlich sein, wenn man die Funktion oder die Variable nur als Hilfsfunktion lokal definieren möchte und sie global gar nicht braucht. Allerdings muss man darauf achten, dass man sich nicht benötigte Variablen verschattet.
Guß
Martin
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:21 Mo 12.11.2007 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:46 So 11.11.2007 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|