3

DrRacket/plt-r5rs と Gambit/gsi の両方で動作するものを書こうとしています。

私が抱えている問題は(load "foo.scm")、Gambit でブロックが読み込まれないことdefine-syntaxです。Gambit で使用(include "foo.scm")すると機能しますが、DrRacket ではもちろん構文エラーが発生します。

移植可能な R5RS コードを記述できるように、これを解決する方法はありますか?

私が試したこと:

  • への再定義(include "foo.scm")(load "foo.scm")およびその逆。問題: Gambit でマクロを再定義するのは違法です。
  • 上記の再定義を(if gambit ...). 問題: if (別の define 内でない限り) 内に define を置くことは違法です。
  • 代わりに、ファイル名を含む文字列をライブラリ ファイルのインクルードに渡します。問題: Gambit のインクルードは、解釈が開始される前に発生するようです。
4

2 に答える 2

2

Gambit と Racket の両方と互換性のあるモジュールを作成するのは非常に困難です。

特定の実装をテストし、条件付きで定義する方法は確かにあります。実際、これを行うための 2 つのシステムがあります: SRFI 0SRFI 7です。ほとんどの実装では、どちらか一方がサポートされています。両方をサポートする人はあまり多くありません。

Gambit は SRFI 0 をサポートしています。Racket は SRFI 7 をサポートしています。

于 2014-02-24T16:24:20.603 に答える