如何从scheme中的符号中删除引号?

如何从scheme中的符号中删除引号?,scheme,Scheme,我必须创建一个简单的scheme程序,输出二叉树的内容。我设法完成了这个程序,但它输出了所有的引号。我怎样才能摆脱它们 (define bintree '(interior-node 'foo (interior-node 'bar (leaf 26) (leaf 12)) (interior-node 'baz (leaf 11) (interior-node 'quux (leaf 117) (leaf 14))))) (print-bintree

我必须创建一个简单的scheme程序,输出二叉树的内容。我设法完成了这个程序,但它输出了所有的引号。我怎样才能摆脱它们

(define bintree 
'(interior-node 
   'foo 
   (interior-node 'bar (leaf 26) (leaf 12)) 
   (interior-node 'baz (leaf 11) 
      (interior-node 'quux (leaf 117) (leaf 14)))))

(print-bintree bintree)  returns ('foo ('bar 26 12) ('baz 11 ('quux 117 14)))

我希望它返回
(foo(bar 26 12)(baz 11(quux 117 14))
而不带
标记。

很难说没有看到整个程序(特别是print bintree的定义),但这看起来像是对引用如何工作的简单误解

特别是,在开放paren之前的引号意味着paren的内容用简单的“数据语言”解释,其中字符序列被解释为符号而不是变量

为了理解我的意思,让我们试着计算一些简单的表达式

(zippy tong)
。。。产生有关未定义的
zippy
tong
的错误

现在,试试这个:

'(zippy tong)
结果在一定程度上取决于您的打印机,但它将产生与打印机相同的结果

(list 'zippy 'tong)
也就是说,前导引号意味着
zippy
tong
被解释为符号,而不是变量

在代码中,您可以编写:

'(interior-node 'foo ...)
这里的问题是,当您已经在一个带引号的表达式中时,您正在使用一个引号。这不是你想要的。特别是,它将产生相当于

(list 'interior-node (list 'quote 'foo) ...)

因此,如果不深入了解quote的神奇之处,那么在bintree的定义中删除
'foo
'bar
等中的引号就足够了。

很难说没有看到整个程序(特别是打印bintree的定义),但这看起来像是一个简单的误解

特别是,在开放paren之前的引号意味着paren的内容用简单的“数据语言”解释,其中字符序列被解释为符号而不是变量

为了理解我的意思,让我们试着计算一些简单的表达式

(zippy tong)
。。。产生有关未定义的
zippy
tong
的错误

现在,试试这个:

'(zippy tong)
结果在一定程度上取决于您的打印机,但它将产生与打印机相同的结果

(list 'zippy 'tong)
也就是说,前导引号意味着
zippy
tong
被解释为符号,而不是变量

在代码中,您可以编写:

'(interior-node 'foo ...)
这里的问题是,当您已经在一个带引号的表达式中时,您正在使用一个引号。这不是你想要的。特别是,它将产生相当于

(list 'interior-node (list 'quote 'foo) ...)

因此,在不深入了解quote的魔力的情况下,从bintree定义中的
'foo
'bar
,等等中删除引号就足够了。

是的。我刚刚意识到我误读了输入,把函数名当成了符号。是的。我刚刚意识到我误读了输入,并将函数名视为符号。