scheme中的撇号类型是什么
我有使用成员函数的条件:scheme中的撇号类型是什么,scheme,lisp,Scheme,Lisp,我有使用成员函数的条件: (cond ((member '1' (some-function)) (display #t)) (else (display #f))) 它工作正常,但我仍然无法找到以下问题的答案: 1) “1”的类型是什么 2) 我有下一个表达式 (λ(x)(=x1)) 如何转换为相同类型的“1”?'x与(引号x)相同。Scheme不会计算参数,所以基本上就是如何计算常量值。这不是一个单独的引用,而是在示例中引用的列表中有两个元素,如下所示: (cond ((member '1
(cond ((member '1' (some-function)) (display #t)) (else (display #f)))
它工作正常,但我仍然无法找到以下问题的答案:
1) “1”的类型是什么
2) 我有下一个表达式
(λ(x)(=x1))
如何转换为相同类型的“1”?
'x
与(引号x)
相同。Scheme不会计算参数,所以基本上就是如何计算常量值。这不是一个单独的引用,而是在示例中引用的列表中有两个元素,如下所示:
(cond ((member '1 '(some-function)) (display #t)) (else (display #f)))
你永远不需要引用一个数字,因为它总是对自身进行评估
'1
与刚才的1
相同。请注意,cond
表达式没有按您的想法执行。真正发生的是:
(cond ((member '1 '(some-function))
(display #t))
(else
(display #f)))
换句话说:数字1
被引用,表达式'(某些函数)
被解释为一个元素列表,符号some function
是其唯一成员。关于第一个问题,这句话:
'1'
…在Scheme中无效-尝试在评估窗口中键入它,不会发生任何情况:第一个引号应用于编号1
,第二个引号需要进一步输入,因此在它之后写入的任何内容都将被引用。仅供参考,双引号表示字符串,与许多其他语言一样:“1”
。但单引号表示计算结果为自身的引号表达式:
'1
=> 1
1
=> 1
这只是这个的简写:
(quote 1)
=> 1
在上面的表达式中,这是不必要的,一个数字已经计算为它自己:
'1
=> 1
1
=> 1
现在,关于第二个问题,它没有意义,因为
'1'
不是一种类型,如上所述。谢谢!对于第二个问题,如何在cond(而不是单个元素列表)中使用(lambda(x)(=x1))@user3453625不清楚您想做什么。使用该功能做什么<代码>成员接收两个(或三个)参数:一个值、一个列表(可选一个函数)。假设1
是值,(lambda(x)(=x1))
是函数……列表在哪里?你想退货什么?