です:
- 異なるモジュールシステム
- (あなたのコードは何歳に応じて)異なるマクロシステム
- 不変短所細胞(あなたが変更可能なものを輸入しない限り)
- ラケットで無片腕IFS(
when
を使用します)
GuileからRacketへの移植コードには、依存関係の「最下位」にあるファイル、つまり他のファイルに依存しないファイルを見つけることができます。 そのようなファイルをRacketで開き、一番上に#langラケットを追加して実行してみてください。
「バインドされていない識別子」のエラーが発生する可能性があります。 あなたが運が良ければ、関数はラケットに存在しますが、ラケット言語には含まれていません。 Racketのドキュメントで名前を検索し、見つかったら(require ...)を使用して名前をプログラムにインポートします。
次に、プログラムを再度実行して、次のエラーを見つけます。
GuileとRacketでは機能が異なるため、Guileのドキュメントで名前を調べて、その動作を確認してください。その後、同じテーマのRacketドキュメントを開いて、Racketで何が呼び出されているかを確認します。
より大きな変更が必要な場合があります。 Racketのドキュメントで機能が見つからない場合は、メーリングリストにお尋ねください。単に別の名前を持つか、誰かがそれを実装してPLaneTに置くことができます(したがって、パッケージをインストールするまでドキュメントには表示されません)。
srfi/1をR5RS言語にインポートする例。近代的なスキームにR4RSコードから
#lang r5rs
(#%require srfi/1)
(xcons 1 2)
違い?
注目すべき点の1つは、R4RSでは空リスト '()は偽とカウントされ、真と解釈されません。
のために外を見るために多くのもののため、この質問を参照してください:
Running SICP Pattern Matching Rule Based Substitution Code
参照R5RSの標準からの変更のも、このリスト: List of changes from R4RS to R5RS
あなたはR5RSと密接に立ち往生している場合と、 R6RS規格に準拠していれば、Racketに組み込まれている互換性言語が役立ちます。参照:http://docs.racket-lang.org/guide/standards.html – dyoo
DrRacket(R5RS/racket/etc)で宣言する言語を指定できますか?コードが壊れている場所の例を挙げることができますか? – oobivat
@oobivat私は故意にネットを席巻しました。私の疑問の背後にある疑問は、「guileスキームの非標準的なものは何ですか?質問に答えるのが簡単な場合は、「R5RSに設定されているRacketで実行しているときに、1994年のguile計画コードで何が破損する可能性がありますか? – hawkeye