2009-08-07 19 views
3

私はいくつかのCommon LispコードをSchemeコードに翻訳しようとしています。 Common Lispのコードはdeftypeです。 SchemeのdeftypeはCommon Lispのdeftypeと同じですか?あなたはCommon LispのdeftypeをどのようにSchemeの同等のコードに変換しますか?Common LispとSchemeの間の相違点

答えて

1

Common Lisp deftypeには、同等のSchemeに相当するものはありません。手作業で型定義を翻訳するか、システムで利用可能なSchemeレコードライブラリに関して、deftypeマクロを記述する必要があります。

ベア・スキームには、ユーザー定義型はまったくありません。 R5RSシステムでは、関連するSRFI(例:SRFI-9 (Record types)SRFI-57 RecordsSRFI-99 ERR5RS records)を検索し、特定のSchemeシステムが実装するSRFIと言語拡張を確認する必要があります。スキームシステムは、一般に、最小限のスキーム標準を超えたものの実装ではあまり一貫していません。 R6RSスキームにはレコードin its standard libraryがあります。

+1

あなたは 'defstruct'を考えていますか? –

+0

私は何かを考えていませんでした。単純なレコードタイプだけが必要な場合は、配列ベースのレコードのマクロを30分でまとめることができます。 –

3

Antonによると、Common Lisp deftypeに相当する正確なスキームはありません。型指定子がCommon Lispにどのように記述できるかについては、CLHS:Type Specifiersを参照してください。これらは、宣言、配列型指定、構造体とCLOSスロットの指定、汎用関数の引数の特殊化、およびonとonで使用されます。これをSchemeに移植することは、一般的に大きなチャレンジになります。あなたの最大の希望は、deftypeで定義されているタイプが些細なことしか使われていないということです。

関連する問題