在 Racket 中将字符串转换为带括号的 S 表达式

use*_*346 2 scheme functional-programming racket

如何将字符串转换为可在 Racket 提示符中计算的"(+ ( - 5 2) 8)"s 表达式?(+ (- 5 2) 8)我尝试过string->symbol,但它返回了'|(+ ( - 5 2) 8)|,这不是我想要的。

小智 6

racket(或任何其他 lisp)中的函数read就是这样做的。exceptread将从输入端口而不是字符串读取。您可以使用open-input-string函数来实现这一点。

(read (open-input-string "(+ (- 5 2))"))
Run Code Online (Sandbox Code Playgroud)