Ich versuche, einige Common Lisp-Code in Scheme-Code zu übersetzen. Der Common Lisp-Code hat eine deftype
. Sind deftype
s in Scheme das gleiche wie deftype
s in Common Lisp? Wie übersetzt man eine deftype
in Common Lisp in entsprechenden Code in Scheme?
Antworten
Zu viele Anzeigen?Wie Anton sagt, gibt es kein exaktes Scheme-Äquivalent zu Common Lisp deftype
. Siehe CLHS:Typenbezeichnungen für eine Beschreibung, was ein Typ-Spezifizierer in Common Lisp sein kann. Diese werden in Deklarationen, Array-Typ-Spezifikationen, struct- und CLOS-Slot-Spezifikationen, generischer Funktionsargumentspezialisierung und so weiter und so fort verwendet. Dies auf Scheme zu portieren, wird eine monumentale Herausforderung sein. Ihre beste Hoffnung ist, dass die Typen, die von deftype
werden nur trivial (oder gar nicht!) verwendet.
Common Lisp deftype
hat kein exaktes Scheme-Äquivalent. Sie müssen Typdefinitionen von Hand übersetzen oder ein deftype
Makro im Sinne der in Ihrem System verfügbaren Schema-Datensatzbibliothek.
Bare Scheme hat überhaupt keine benutzerdefinierten Typen. In einem R5RS-System müssen Sie die entsprechenden SRFIs nachschlagen (z.B. SRFI-9 (Satzarten) , SRFI-57 Datensätze , SRFI-99 ERR5RS Datensätze ) und sehen Sie auch, welche SRFIs und Spracherweiterungen Ihr spezielles Scheme-System implementiert; Scheme-Systeme sind im Allgemeinen nicht sehr konsistent in ihren Implementierungen von allem, was über den minimalen Scheme-Standard hinausgeht. R6RS Scheme hat Datensätze in seiner Standardbibliothek .