Common Lisp中的deftype与Scheme的区别

时间:2009-08-07 19:17:40

标签: scheme common-lisp deftype

我正在尝试将一些Common Lisp代码翻译成Scheme代码。 Common Lisp代码有一个deftype。 Scheme中的deftype与Common Lisp中的deftype相同吗?如何将Common Lisp中的deftype转换为Scheme中的等效代码?

2 个答案:

答案 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 RecordsSRFI-99 ERR5RS records),并查看您的特定Scheme系统实施的SRFI和语言扩展;方案系统在超出最小Scheme标准的任何实现中通常不是非常一致。 R6RS计划有记录in its standard library

相关问题