我正在尝试将一些Common Lisp代码翻译成Scheme代码。Common Lisp代码中有一个deftype
。在Scheme中,deftype
和Common Lisp中的deftype
一样吗?如何将Common Lisp中的deftype
翻译成与之等效的Scheme代码?
我正在尝试将一些Common Lisp代码翻译成Scheme代码。Common Lisp代码中有一个deftype
。在Scheme中,deftype
和Common Lisp中的deftype
一样吗?如何将Common Lisp中的deftype
翻译成与之等效的Scheme代码?
deftype
完全相对应的内容。请参见CLHS:Type Specifiers了解Common Lisp中类型说明符的描述。这些用于声明、数组类型说明、结构体和CLOS槽说明、通用函数参数特化等等。在Scheme中进行移植通常是一个巨大的挑战。您最好的希望是deftype
定义的类型只是被轻微地使用(或根本不使用!)。Common Lisp中的deftype
没有一个确切的Scheme等价物。您将不得不手动翻译类型定义,或者使用系统中可用的任何Scheme记录库编写deftype
宏。
Bare Scheme根本没有用户定义的类型。在R5RS系统中,您将不得不查找相关的SRFIs(例如SRFI-9(记录类型),SRFI-57记录,SRFI-99 ERR5RS记录),并查看您特定的Scheme系统实现了哪些SRFIs和语言扩展;Scheme系统通常对超出最小Scheme标准以外的任何内容的实现都不是非常一致的。 R6RS Scheme在其标准库中具有记录。
defstruct
? - Doug Currie