将字符串转换为Scheme中的代码

Pau*_*ers 8 lisp scheme

如何将字符串转换为PLT Scheme中的相应代码(不包含该string->input-port方法)?例如,我想转换此字符串:

"(1 (0) 1 (0) 0)"
Run Code Online (Sandbox Code Playgroud)

进入这个清单:

'(1 (0) 1 (0) 0)
Run Code Online (Sandbox Code Playgroud)

是否可以在不打开文件的情况下执行此操作?

小智 10

Scheme具有read从输入端口读取s表达式的过程,您可以将字符串转换为输入流string->input-port.因此,您可以从字符串中读取Scheme对象

(read (string->input-port "(1 (0) 1 (0) 0)"))
Run Code Online (Sandbox Code Playgroud)

我没有安装Scheme,所以我只从引用中读取它并且实际上没有测试它.

  • 对于任何使用Guile Scheme来到这里的人:`(read(open-input-string)(quote foo)"))`. (2认同)

Ant*_*rov 5

来自PLT计划手册:

(open-input-string string [name-v])创建一个输入端口,从字符串的UTF-8编码(参见第1.2.3节)读取字节.可选name-v参数用作返回端口的名称; 默认是'string.