我希望这已经没有被问过了.我看到了一堆单引号和其他语言的双引号(html,javascript,python)但找不到方案
在解释器的计划中,如果我键入:
(某些'x)我理解x将被视为x,而不是像某个变量那样被评估为某个东西
另一方面,如果我使用
(x)
x被评估为它的变量
我知道'是引用的简称(即(引用x))但我得不到的是它与双引号的区别.
如果我输入
在你的提示"你好",我回来了"你好"
唯一的区别是双引号保留数据的引号?我听说双引号就像一个char数组,但它没有得到评估,单引号也没有,所以这就是差异,何时/为什么我会使用一个而不是另一个?
谢谢大家.
在Scheme中,单引号和双引号是完全不同的结构.双引号产生一个字符串:
> (string? "foo")
#t
Run Code Online (Sandbox Code Playgroud)
而前缀运算符单引号可防止对表达式求值.例如,(+ 1 2)评估为3,但当您单引号时,您会得到一个包含的列表+,1并且2:
> (define three '(+ 1 2))
> three
(+ 1 2)
> (car three)
+
> (cadr three)
1
> (caddr three)
2
Run Code Online (Sandbox Code Playgroud)
它实际上是一个被称为运算符的语法糖quote,您可以通过引用两次来验证:
> ''foo
(quote foo)
Run Code Online (Sandbox Code Playgroud)