我发现字符串替换功能的球拍文档与球拍读取-评估-打印循环的实际工作方式大不相同。文档说您可以在String-replace 之后放置一个关键字来指定您只想替换第一个实例,就像这样(但他们没有这样的示例):
(string-replace "My Dog is a Dog" "Dog" "Cat" #:all #f)
所以,根据文档,这应该输出:“我的猫是狗”(我知道这没有意义,但这只是一个例子)。
相反,我的不同球拍安装以不同的方式抱怨,例如“过程不期望具有给定关键字的参数”或关于使用关键字作为过程的东西。
我想我仍然可以用 string->list 做我想做的事,但我最大的抱怨是这违反了机器人第二定律!如果某事是一个有效的命令(直接来自文档),那就去做吧,别再抱怨了!
编辑:如果我将 #:all 更改为 #:all?,然后它会抱怨参数的数量应该是 3 个带有可选关键字,但给出了 5 个(换句话说,它会将 #:all?#f 视为两个单独的参数,而不是关键字组)。
EDIT2:顺便说一句,我在 Linux 中使用 drracket。如果我在终端只使用命令“racket”,则更正的语法有效。