S
sw33tlull4by
Guest
Hi!
Ich habe hier ein kleines Problem mit Scheme.
Also:
Folgender Code wird zwar ausgefuehrt aber wenn ich
(was 'zeigen) eingebe dann gibt es keine ausgabe und beim starten des Interpreten gibt es schon zuvor eine Ausgabe was eigentlich nicht sein sollte.
Ich habe den Code dann kuerzerhand in Zeile 4 umgeaendert, zu
(define zeigen wert).
Es gab darauf hin keine Ausgabe mehr beim starten des Interpreten,was ich schonmal toll fand, ABER
Wenn ich
(was 'zeigen)
aufrufe nach
(was 'null)
dann steht dort wieder der Startwert und nicht null.
Meine beiden Fragen sind nun:
1.
Wiso gibt es oben eine leere Ausgabe und eine Ausgabe nach der gar nicht gefragt wurde?
2.
Wiso steht dort wieder der alte Wert?
(begin
(set! wert 0))
setzt doch den Wert der definierten variablen auf 0.
Mfg
sw33t
//edit:
Ich habe es mittlerweile selbst geschnallt.
Die unerwuenschte ausgabe gibt es:weil der Interpret erst allen Scheme code laedt und dann ggf. sofort auswertet.(ein Konditional hilft hier wunder.
Der Wert aendert sich nicht weil zeigen ene Variable ist welche den Alten wert Anzeigt.
Laut umgebungsmodell ist dies naehmlich wieder eine neue Verknuepfung.
Gott wie ich Pointer vermisse......
Ich habe hier ein kleines Problem mit Scheme.
Also:
Folgender Code wird zwar ausgefuehrt aber wenn ich
(was 'zeigen) eingebe dann gibt es keine ausgabe und beim starten des Interpreten gibt es schon zuvor eine Ausgabe was eigentlich nicht sein sollte.
Code:
(define was
(local(
(define wert 2)
(define zeigen (display wert))
(define null (begin
(set! wert 0)
wert))
(define (wasnun w)
(cond((equal? w 'zeigen) zeigen)
((equal? w 'null) null))
))
wasnun))
(define zeigen wert).
Es gab darauf hin keine Ausgabe mehr beim starten des Interpreten,was ich schonmal toll fand, ABER
Wenn ich
(was 'zeigen)
aufrufe nach
(was 'null)
dann steht dort wieder der Startwert und nicht null.
Meine beiden Fragen sind nun:
1.
Wiso gibt es oben eine leere Ausgabe und eine Ausgabe nach der gar nicht gefragt wurde?
2.
Wiso steht dort wieder der alte Wert?
(begin
(set! wert 0))
setzt doch den Wert der definierten variablen auf 0.
Mfg
sw33t
//edit:
Ich habe es mittlerweile selbst geschnallt.
Die unerwuenschte ausgabe gibt es:weil der Interpret erst allen Scheme code laedt und dann ggf. sofort auswertet.(ein Konditional hilft hier wunder.
Der Wert aendert sich nicht weil zeigen ene Variable ist welche den Alten wert Anzeigt.
Laut umgebungsmodell ist dies naehmlich wieder eine neue Verknuepfung.
Gott wie ich Pointer vermisse......