2009-08-07 45 views

回答

1

Common Lisp deftype沒有完全相同的Scheme。您必須手動翻譯類型定義,或者根據系統中可用的任何Scheme記錄庫編寫deftype宏。

Bare Scheme根本沒有用戶定義的類型。在R5RS系統中,您必須查找相關的SRFI(例如SRFI-9 (Record types),SRFI-57 Records,SRFI-99 ERR5RS records),並查看您的特定Scheme系統實施的SRFI和語言擴展; Scheme系統在實現超出最小Scheme方案標準的任何東西時通常不是非常一致。 R6RS計劃有記錄in its standard library

+1

你在想'defstruct'嗎? – 2009-08-08 00:34:11

+0

我沒有考慮任何具體的事情。如果您只需要簡單的記錄類型,則可以在半小時內將基於數組的記錄放入宏中。 – 2009-08-08 07:22:30

3

安東說,沒有確切的計劃等同於Common Lisp deftype。請參閱CLHS:Type Specifiers以獲取有關Common Lisp中類型說明符的描述。這些用於聲明,數組類型規範,結構和CLOS插槽規範,泛型函數參數專用化等等。將此移植到Scheme通常將是一個巨大的挑戰。您最大的希望是deftype定義的類型只能用於平凡(或根本不用!)。