#lang eopl
(define-datatype env env?
(empty-env)
(extended-env (var symbol?)
(val scheme-val?)
(envi env?)))
(define (scheme-val? x) #t)
; examples
(define e-env (empty-env))
(define e1 (extended-env 'x 1 (extended-env 'y #f e-env)))
Ich verstehe nicht, wie scheme-val?
verwendet wird. Warum gibt es eine x
, und warum geben wir #t
zurück? Umgebung ist eine Funktion, die eine Variable mit einem Wert verknüpft.Was macht dieses Schema?
Also im Beispiel verknüpfen wir x = 1
und y = #f
, richtig?
Danke.
Vielen Dank. Das Prädikat 'scheme-val' nimmt' x' an, aber in 'env' wird es in dieser Form' var scheme-val? 'Geschrieben, also rate ich, wenn wir' define-datatype' treffen, das Schema zu werfen Variable links vom Prädikat als Parameter des Prädikats. Ist das korrekt? – CppLearner
Verwechseln Sie 'define-datatype' nicht mit' define'. In der 'env' Definition, speziell der' envanced-env' Definition, ist 'val' ein' scheme-val'. Diese 'scheme-val?' -Operation wird durch die '(define (scheme-val? X) #t)' -Funktion definiert, die für jeden Parameter 'x' wahr zurückgibt. Das ist nur die Syntax. – prelic
Danke. Aber wo ist der Parameter x, wenn wir 'val scheme-val?' Schreiben? Ist "val" in "scheme-val" übergegangen?Mit anderen Worten, Schema-Interpreter ist schlau, um zu bemerken, dass, da dies "Datentyp" ist, also die Variable auf der linken Seite als Parameter übergeben wird? Ich hoffe, das klärt meine Frage auf. Vielen Dank. – CppLearner