Вам не нужно вручную копировать и вставлять элементы из SRFI 13: он встроен в Racket. Фактически, большинство основных библиотек SRFI связаны с Racket: http://docs.racket -lang.org / srfi / index.html
Если вы используете язык r5rs в Racket, вы можете использовать SRFI 13 со следующей строкой:
(#%require srfi/13)
Странно выглядящий #%require
- специфичный для Racket hook , который позволяет программе r5rs загружать библиотечные модули из Racket.
Итак, программа r5rs в Racket будет выглядеть примерно так:
(#%require srfi/13)
(display (string-replace "foo world" "hello" 0 3))
(newline)
Если вместо использования базового языка r5rs
вы используете вместо него полноценный #lang racket
, импорт SRFI 13 будет выглядеть аналогично. Вот небольшая программа в #lang racket
, которая делает то же самое, что и предыдущая программа:
#lang racket
(require srfi/13)
(string-replace "foo world" "hello" 0 3)
К сожалению, в сообщаемой вами ошибке недостаточно информации для точной диагностики проблемы. Я подозреваю, что где-то было неполное копирование и вставка, так как вы упомянули, что вы скопировали из SRFI 13. Одна из причин, почему я думаю, что вы, возможно, неправильно скопировали код, заключается в том, что вы упоминаете его определение:
define-syntax let-string-start+end
и в этой строке фактически отсутствуют некоторые важные скобки; в первоисточнике в начале этой строки есть ведущая фамилия.
Но вы не должны пытаться отбирать куски из реализации SRFI вручную, по крайней мере, до тех пор, пока вы не познакомитесь со Схемой. Упростите загрузку всей библиотеки.