什么是撇号类型的方案

use*_*625 4 lisp scheme

我有使用成员函数的条件:

(cond ((member '1' (some-function)) (display #t)) (else (display #f)))
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我仍然找不到答案:

1)'1'的类型是什么?

2)我有下一个表达式

(lambda(x)(= x 1))

我怎样才能转换为相同类型的'1'?

Ósc*_*pez 5

请注意,cond表达式没有按照您的想法进行.真正发生的是这个:

(cond ((member '1 '(some-function))
       (display #t))
      (else
       (display #f)))
Run Code Online (Sandbox Code Playgroud)

换句话说:数字1被引用,表达式'(some-function)被解释为单个元素列表,其中符号some-function作为其唯一成员.关于第一个问题,这个表达式:

'1'
Run Code Online (Sandbox Code Playgroud)

...在Scheme中无效 - 尝试在评估窗口中键入它,不会发生任何事情:第一个引用适用于数字1,第二个引用期望进一步输入,因此在它之后写的任何内容都将被引用.FYI双引号表示字符串,与许多其他语言一样:"1".但是单个引号表示引用的表达式,它对自身进行求值:

'1
=> 1
Run Code Online (Sandbox Code Playgroud)

它只是简写:

(quote 1)
=> 1
Run Code Online (Sandbox Code Playgroud)

在上面的表达式中没有必要,一个数字已经评估为自己:

1
=> 1
Run Code Online (Sandbox Code Playgroud)

现在,关于第二个问题,它没有意义,因为'1'它不是一种类型,如上所述.