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))
是函数……列表在哪里?你想退货什么?