scheme中双单引号符号的字符串数据

scheme中双单引号符号的字符串数据,scheme,racket,Scheme,Racket,我在这里读了一些答案,并在谷歌上搜索,但没有运气 我有这个: ''a 在scheme中(确切地说是Chez scheme),我想把它转换成一个字符串(在我的to string lambda中就是这样) 现在,询问它是否是一个符号(使用符号谓词)会得到一个肯定的答案,所以我知道什么时候操作,但之后我什么也做不了,因为无法获取内部引号本身 所以基本上我找不到把“a”变成“a”的方法 希望这是简单的,任何帮助将不胜感激 这个表达式: ''a 等同于此符号定义(顺便问一下,为什么使用双引号?单引号就

我在这里读了一些答案,并在谷歌上搜索,但没有运气

我有这个:

''a
在scheme中(确切地说是Chez scheme),我想把它转换成一个字符串(在我的to string lambda中就是这样)

现在,询问它是否是一个符号(使用符号谓词)会得到一个肯定的答案,所以我知道什么时候操作,但之后我什么也做不了,因为无法获取内部引号本身

所以基本上我找不到把“a”变成“a”的方法

希望这是简单的,任何帮助将不胜感激

这个表达式:

''a
等同于此符号定义(顺便问一下,为什么使用双引号?单引号就足够了):

要将其转换为字符串,只需执行以下操作:

(symbol->string (cadr ''a))
=> "a"

好的,想你了cadr,会尝试更新的,谢谢!更新:它可以工作!:-)@鲁茨哈拉巴尼看到了我最新的答案。无论如何,我认为代码中有一些奇怪的东西,至少可以说是可疑的,如果你必须知道我正在使用scheme编写编译器,并且原始输入带有引号。因此,在REPL循环中,用户将使用输入“'a”生成一个简单的引用表达式求值,但它将被再次引用,以便我能够正确地阅读它(因为我们不仅仅处理引用表达式…),生成“a”。谢谢你的帮助@处理“不仅仅是引用的表达式”的常用方法是使用
quasikote
。然后,默认情况下引用内容,但您可以使用
unquote
unquote拼接来中断引用。比你的双引号要整洁得多。是的,我用的大多是双引号,但是你怎么能引用双引号呢?(意思是,用户插入一个引号,在扫描和解析时,您如何知道它是引号?所有内容都是引号)。
(symbol->string (cadr ''a))
=> "a"