2010-08-09 30 views
5

D'abord, je suis un débutant LISP.Est-il possible d'implémenter des coroutines en utilisant uniquement des primitives LISP?

Ce que je veux obtenir est une fonction de micro-threading coopératif. Et cela peut être gagné avec la coroutine. Comme je le sais, Scheme supporte les coroutines via des continuations. Cependant, toutes les implémentations de Scheme ne peuvent pas avoir de suites. Si oui, puis-je ajouter une fonction de continuation avec seulement des primitives LISP?

+0

A propos de quel type de « LISP » vous parlez? – Svante

+0

@Svante Principalement Scheme, mais peut-être n'importe quel type de LISP. J'ai parlé de LISP 'primitives' que tout LISP a. Je veux défier de faire la propre mise en œuvre si je pouvais :) – Eonil

+3

Ah. Eh bien, je pensais que vous pourriez vouloir dire un ancien dialecte, un de l'époque où les gens l'épelaient encore dans toutes les capitales. – Svante

Répondre

5

Vous pouvez. Les chapitres 5 et 6 de Essentials of Programming Languages montrent comment implémenter des continuations dans Scheme. Dans son livre On Lisp, Paul Graham explique comment implémenter des continuations dans Common Lisp (Chapitres 20-22).

+0

Ces «suites» pour CL sont relativement limitées, je pense. –

+0

@Rainer Puis-je connaître la limitation? – Eonil

+1

@Eonil On Lisp contient une implémentation de multi-threading sur les continuations, donc les routines peuvent également être possibles avec cette implémentation. –