我正在尝试将一些Common Lisp代码翻译成Scheme代码。 Common Lisp代码有一个deftype
。 Scheme中的deftype
与Common Lisp中的deftype
相同吗?如何将Common Lisp中的deftype
转换为Scheme中的等效代码?
答案 0 :(得分:3)
正如Anton所说,没有确切的Scheme等同于Common Lisp deftype
。有关Common Lisp中类型说明符的说明,请参阅CLHS:Type Specifiers。它们用于声明,数组类型规范,struct和CLOS槽规范,泛型函数参数特化以及on和on。将此移植到Scheme通常将是一个巨大的挑战。您最好的希望是deftype
定义的类型只能被轻易使用(或根本不使用!)。
答案 1 :(得分: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标准的任何实现中通常不是非常一致。 R6RS计划有记录in its standard library。