Common Lisp中deftype与Scheme的区别

4

我正在尝试将一些Common Lisp代码翻译成Scheme代码。Common Lisp代码中有一个deftype。在Scheme中,deftype和Common Lisp中的deftype一样吗?如何将Common Lisp中的deftype翻译成与之等效的Scheme代码?

2个回答

4
正如Anton所说,Scheme没有与Common Lisp的deftype完全相对应的内容。请参见CLHS:Type Specifiers了解Common Lisp中类型说明符的描述。这些用于声明、数组类型说明、结构体和CLOS槽说明、通用函数参数特化等等。在Scheme中进行移植通常是一个巨大的挑战。您最好的希望是deftype定义的类型只是被轻微地使用(或根本不使用!)。

2

Common Lisp中的deftype没有一个确切的Scheme等价物。您将不得不手动翻译类型定义,或者使用系统中可用的任何Scheme记录库编写deftype宏。

Bare Scheme根本没有用户定义的类型。在R5RS系统中,您将不得不查找相关的SRFIs(例如SRFI-9(记录类型)SRFI-57记录SRFI-99 ERR5RS记录),并查看您特定的Scheme系统实现了哪些SRFIs和语言扩展;Scheme系统通常对超出最小Scheme标准以外的任何内容的实现都不是非常一致的。 R6RS Scheme在其标准库中具有记录


1
你是否在考虑使用defstruct - Doug Currie
我没有想到任何具体的事情。如果你只需要简单的记录类型,你可以在半小时内编写一个基于数组的记录宏。 - Anton Tykhyy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接