方案Lambda返回值

方案Lambda返回值,lambda,scheme,read-eval-print-loop,Lambda,Scheme,Read Eval Print Loop,这个计划快把我逼疯了。在下面的代码中,我只是试图将给定给repl的字符串解析为一个实际的列表。相反,当我打印应该是我的解析列表时,我得到的只是一个正确排列的列表!我正在使用以下站点测试我的代码: 我完全希望我的代码创建如下列表: (+ 1 2) 或者这是因为我不知道类型在scheme中是如何工作的。 (“+”1“2”) 非常感谢您对我的列表为何看起来像以下内容的任何帮助: ()) 代码正在运行,我在Racket中测试了它-您用来测试它的解释器可能有问题 顺便说一句,您想做的事情可以使用内置过程

这个计划快把我逼疯了。在下面的代码中,我只是试图将给定给repl的字符串解析为一个实际的列表。相反,当我打印应该是我的解析列表时,我得到的只是一个正确排列的列表!我正在使用以下站点测试我的代码:

我完全希望我的代码创建如下列表: (+ 1 2) 或者这是因为我不知道类型在scheme中是如何工作的。 (“+”1“2”)

非常感谢您对我的列表为何看起来像以下内容的任何帮助: ())


代码正在运行,我在Racket中测试了它-您用来测试它的解释器可能有问题

顺便说一句,您想做的事情可以使用内置过程来完成,如下所示:

(read (open-input-string "(+ 1 2)"))
=> '(+ 1 2) ; a list of symbols/numbers, not strings

这很奇怪,这里发布的代码返回了
”(“+”1“2”)
,我想这是您期望的正确值真的吗?你也用了我联系的同一个翻译吗?不,我用的是球拍。看起来问题出在解释器上,而不是你的代码。我现在正在安装球拍,自己测试一下。我确实很头疼,想弄清楚到底是怎么回事,希望是这样。另外,请看我下面的答案,有一个更简单的方法来做你想做的事。谢谢,这更方便。我唯一的问题是,如何比较+运算符?以前,因为+是一个字符串,所以我可以使用string=?但是是否有一个特殊的比较运算符用于比较文字运算符,如+、-、*,等等?使用
symbol=?
。例如:
(符号=?(汽车“(+12))”+)=>#t
。并对数字使用
=
。或者简单地使用适用于所有类型的
equal?
,再次感谢伟大的答案。
(read (open-input-string "(+ 1 2)"))
=> '(+ 1 2) ; a list of symbols/numbers, not strings