2010-08-09 13 views
5

Primero, soy un novato de LISP.¿Es posible implementar coroutines utilizando solo primitivas LISP?

Lo que quiero obtener es una función cooperativa de microhilo. Y esto se puede ganar con coroutine. Como sé, Scheme admite corrutinas a través de continuaciones. Sin embargo, no todas las implementaciones del Esquema pueden tener continuaciones. Si es así, ¿puedo agregar una función de continuación con solo primitivas LISP?

+0

¿Sobre qué tipo de "LISP" estás hablando? – Svante

+0

@Svante Mainly Scheme, pero posiblemente cualquier tipo de LISP. Hablé acerca de los "primitivos" de LISP que tiene cualquier LISP. Quiero desafiar para hacer la propia implementación si pudiera :) – Eonil

+3

Ah. Bueno, pensé que podría referirse a algún dialecto antiguo, uno del tiempo en que la gente aún lo deletreaba en todas las capitales. – Svante

Respuesta

5

Puedes. Los capítulos 5 y 6 de Essentials of Programming Languages muestran cómo implementar continuaciones en Scheme. En su libro On Lisp, Paul Graham explica cómo implementar las continuaciones en Common Lisp (capítulos 20-22).

+0

Estas 'continuaciones' para CL son relativamente limitadas, creo. –

+0

@Rainer ¿Puedo saber sobre la limitación? – Eonil

+1

@Eonil On Lisp contiene una implementación de multi-threading en continuaciones, por lo que las correlaciones también podrían ser posibles con esa implementación. –

Cuestiones relacionadas