1

string-replace関数のRacketドキュメントは、ラケットのread-eval-printループが実際にどのように機能するかとは大きく異なることがわかりました。ドキュメントによると、String-replaceの後にキーワードを配置して、最初のインスタンスのみを置換するように指定できます(ただし、この例はありません)。

(string-replace "My Dog is a Dog" "Dog" "Cat" #:all #f)

したがって、ドキュメントによると、これは「私の猫は犬です」と出力するはずです(私はそれが意味をなさないことを知っていますが、これは単なる例です)。

代わりに、私のさまざまなラケットのインストールは、「プロシージャは指定されたキーワードの引数を期待しない」などのさまざまな方法で不平を言います。または、キーワードをプロシージャとして使用することについて何かを言います。

string-> listでやりたいことがまだできると思いますが、私の大きな不満は、これがロボット工学の第2法則に違反していることです。何かが有効なコマンド(ドキュメントから直接)である場合は、それを実行して、泣き言をやめてください!

編集:#:allを#:all?に変更すると、オプションのキーワードを使用して引数の数を3にする必要があると文句を言いますが、5が指定されます(つまり、#:all?#fは2つと見なされます)キーワードグループではなく、個別の引数)。

EDIT2:ところで、私はここLinuxでdrracketを使用しています。ターミナルでコマンド「racket」だけを使用すると、修正された構文が機能します。

4

1 に答える 1

2

ええ、それはバグです-キーワード名は#:all?、ではなく、でなければなりません#:all

-> (string-replace "My Dog is a Dog" "Dog" "Cat" #:all? #f)
"My Cat is a Dog"

ソースで修正されました。

于 2013-02-28T06:53:01.400 に答える