2010-08-09 9 views
5

Zuerst bin ich ein LISP-Neuling.Ist es möglich, Koroutinen nur mit LISP-Primitiven zu implementieren?

Was ich bekommen möchte, ist eine kooperative Micro-Threading-Funktion. Und das kann mit Coroutine gewonnen werden. Wie ich weiß, unterstützt Scheme Koroutinen über Fortsetzungen. Es kann jedoch sein, dass nicht alle Scheme-Implementierungen fortgeführt werden können. Wenn ja, kann ich ein Fortsetzungsmerkmal nur mit LISP-Primitiven hinzufügen?

+0

Über welche Art von "LISP" redest du? – Svante

+0

@Svante Hauptsächlich Schema, aber möglicherweise jede Art von LISP. Ich habe über LISP-Primitive gesprochen, die jeder LISP hat. Ich möchte herausfordern, eigene Implementierung zu machen, wenn ich könnte :) – Eonil

+3

Ah. Nun, ich dachte, du könntest einen alten Dialekt meinen, einen aus der Zeit, als die Leute ihn noch in allen Hauptstädten geschrieben haben. – Svante

Antwort

5

Sie können. Die Kapitel 5 und 6 von Essentials of Programming Languages zeigen, wie man Fortsetzungen in Schema implementiert. In seinem Buch On Lisp erklärt Paul Graham, wie man Fortsetzungen in Common Lisp (Kapitel 20-22) implementiert.

+0

Diese "Fortsetzungen" für CL sind relativ begrenzt, würde ich denken. –

+0

@Rainer Kann ich über die Beschränkung Bescheid wissen? – Eonil

+1

@Eonil On Lisp enthält eine Implementierung von Multi-Threading auf Fortsetzungen, so dass auch Co-Routinen mit dieser Implementierung möglich sind. –

Verwandte Themen