4 Stimmen

Unterschied zwischen deftype in Common Lisp und Scheme

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?

4voto

Doug Currie Punkte 39584

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.

2voto

Anton Tykhyy Punkte 18869

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 .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X