#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)))
scheme-val?
の使用方法がわかりません。なぜx
がありますか?#t
はなぜ返されますか? 環境変数を値に関連付ける関数です。このスキームは何をしますか?
この例では、x = 1
とy = #f
が関連付けられています。
ありがとうございました。
ありがとうございました。述語 'scheme-val'は' x'をとりますが、 'env'では' var scheme-val? 'という形式で書かれていますので、 'define-datatype'を打つと推測しています。述語のパラメータとしての述語の左側の変数。あれは正しいですか? – CppLearner
'define-datatype'と' define'を混同しないでください。 'env'定義、特に' extended-env'定義では、 'val'は' scheme-val'です。この 'scheme-val? '操作は'(define(scheme-val?x)#t) '関数によって定義され、' x'パラメータに対して真を返します。それは単なる構文です。 – prelic
ありがとうございます。しかし、 'val scheme-val? 'と書くとき、パラメータxはどこにありますか? 'val'は' scheme-val'に渡されますか?つまり、schemeインタプリタは、これが 'datatype'なので、左辺の変数がパラメータとして渡されることに気付くのは賢明ですか?私はこれが私の質問を明確にすることを望む。ありがとう。 – CppLearner