Scheme 这个计划是做什么的?
我不知道如何使用Scheme 这个计划是做什么的?,scheme,Scheme,我不知道如何使用scheme val?。为什么有一个x,为什么我们返回#t? 环境是将变量与值关联的函数 所以在这个例子中,我们将x=1和y=#f关联起来,对吗 谢谢。在scheme中,#t表示布尔值为true,#f表示false。我不完全理解其余的内容,但我建议DrRacket的调试器看看发生了什么 #lang eopl (define-datatype env env? (empty-env) (extended-env (var symbol?)
scheme val?
。为什么有一个x
,为什么我们返回#t
?
环境是将变量与值关联的函数
所以在这个例子中,我们将x=1
和y=#f
关联起来,对吗
谢谢。在scheme中,#t
表示布尔值为true,#f
表示false。我不完全理解其余的内容,但我建议DrRacket的调试器看看发生了什么
#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)))
将e-env
指定为空env
(define e-env (empty-env))
定义一个匿名函数,该函数接受一个参数x
,如果它是scheme val
(在本例中为任意值),则返回#t
运行此代码后,e1
的结果为:
(define (scheme-val? x) #t)
因此,e1
是一个扩展环境,var='x,val=1,envi=(扩展环境,var='y,val=#f,envi=e-env)
(我认为)在scheme中,#t
表示布尔真,#f
表示假。我不完全理解其余的内容,但我建议DrRacket的调试器看看发生了什么
#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)))
将e-env
指定为空env
(define e-env (empty-env))
定义一个匿名函数,该函数接受一个参数x
,如果它是scheme val
(在本例中为任意值),则返回#t
运行此代码后,e1
的结果为:
(define (scheme-val? x) #t)
因此,e1
是一个扩展环境,var='x,val=1,envi=(扩展环境,var='y,val=#f,envi=e-env)
(我认为)
scheme val?
是一个函数,如果传递给它的值属于该类型(在本例中为“scheme val”),则应该返回#t
(true)。就像symbol?
为符号返回true,为其他所有对象返回false一样,scheme-val?
将为scheme-val的任何对象返回true
事实证明,在这种情况下,scheme-val?
对所有内容都返回true,因此所有内容都是scheme-val。x
之所以存在,是因为谓词必须接受单个参数,它只是忽略参数,并对所有内容返回#t
在这种情况下,这一点很重要,因为您会注意到定义数据类型
,它需要一个值和一个谓词来检查其类型(env
是值,env?
是谓词)
显然,
extended env
也使用类似的子句。在这种情况下,其中三个是:var
,它是一个符号?
,val
,它是一个scheme val?
和env
,它是一个env?scheme val?
是一个函数,如果传递给它的值是该类型(在这种情况下,是一个“scheme val”)。就像symbol?
为符号返回true,为其他所有对象返回false一样,scheme val?
将为scheme-val的任何对象返回true
事实证明,在这种情况下,scheme-val?
对所有内容都返回true,因此所有内容都是scheme-val。x
之所以存在,是因为谓词必须接受单个参数,它只是忽略参数,并对所有内容返回#t
在这种情况下,这一点很重要,因为您会注意到定义数据类型
,它需要一个值和一个谓词来检查其类型(env
是值,env?
是谓词)
显然,extended env
也使用类似的子句。在这种情况下,其中三个子句:var
,它是符号?
,val
,它是scheme val?
和env
,这是env?非常感谢。谓词scheme val
使用x
,但是在中de>env
,它是以这种形式编写的var scheme val?
,所以我猜当我们点击define datatype
时,scheme知道将谓词左侧的变量作为谓词的参数。这正确吗?不要将define datatype
与define
混淆。在env
定义中,具体而言,extended env
定义,val
是一个scheme val
。此scheme val?
操作由(define(scheme val?x)#t)定义
函数,它为任何参数x
返回true。这只是语法。谢谢。但是当我们编写val scheme val?
时,参数x在哪里?是val
传递到scheme val
?换句话说,scheme解释器很聪明地注意到,因为这是数据类型,所以变量左边是作为参数传递的?我希望这能澄清我的问题。谢谢。非常感谢。谓词scheme val
采用x
,但在env
中,它是以这种形式写的var scheme val?
,所以我猜当我们点击define datatype
时,scheme知道将变量扔到左边of谓词作为谓词的参数。是否正确?不要将define datatype
与define
混淆。在env
定义中,特别是extended env
定义中,val
是一个scheme val
。此scheme val?
操作由定义(define>)(方案val?x)#t)
函数,它为任何参数x
返回true。这只是语法。谢谢。但是当我们编写val scheme val?
时,参数x在哪里?是val
传递到scheme val
?换句话说,scheme解释器很聪明地注意到,因为这是数据类型,所以变量左边是作为参数传递的?我希望这能澄清我的问题。谢谢。非常好:)谢谢。部分返回true对所有事情都是非常有帮助的