SRFI 13からアイテムを手動でコピー&ペーストする必要はありません。これはラケットに組み込まれています。実際には、主要なSRFIライブラリのほとんどがラケットにバンドルされていますhttp://docs.racket-lang.org/srfi/index.html
あなたはラケットでR5RS言語を使用している場合は、次の行にSRFI 13で引くことができます。
(#%require srfi/13)
奇妙に見える#%require
は、Racket固有のhookで、r5rsプログラムがラケットからライブラリモジュールをロードできるようにします。
だから、ラケットでR5RSプログラムはこのようなものになるだろう。代わりに、基本的なr5rs
言語を使用しての、あなたの代わりに本格的な#lang racket
を使用し、SRFI 13をインポートすることになり、場合
(#%require srfi/13)
(display (string-replace "foo world" "hello" 0 3))
(newline)
類似。ここでは、前のプログラムと同じ処理を行い#lang racket
の小さなプログラムがあります:
#lang racket
(require srfi/13)
(string-replace "foo world" "hello" 0 3)
残念ながら、あなたが報告しているエラーは、問題を正確に診断するための十分な情報を持っていません。私はあなたがSRFI 13からコピーされたことを言及するので、私はあなたがコードを誤ってコピーされているかもしれないと思う理由の一つは、あなたがそれを定義挙げることで、どこか不完全なコピー&ペーストを疑う:
define-syntax let-string-start+end
とその行は実際にいくつかの重要な括弧を欠いています。元のソースには、その行頭に先頭の括弧があります。
しかし、あなたがSchemeをよく知っていない限り、少なくともSRFI実装からビットとピースを手で取り除こうとするべきではありません。ライブラリ全体をロードすることで簡素化できます。
"require"を認識していないようです。おそらくR5RSを使用しているからでしょうか?わからない:/ – ercliou
RacketのR5RSモードを使用している場合、 '(#%require srfi/13)'を使用する必要があります。 –
おかげさまで、両方の方法がうまくいった。そしてChris、それはR5RSの標準構文ですか? "#%"とは何ですか? – ercliou