2011-08-05 6 views
7

This guy reconoce que la adición de fexprs a LISP simplifica drásticamente la implementación del lenguaje en el esquema.¿Agregar f-exprs simplifica la implementación de macros a partir de expresiones fundamentales en LISP?

Here we see cómo se implementarían las macros utilizando LISP de MacCarthy.

Mi pregunta es: ¿añadir f-exprs simplifica la implementación de macros en LISP?

+2

Lo importante de Lisp es la abstracción, no la implementación. La necesidad de simplicidad de la implementación es casi irrelevante junto a la necesidad de simplicidad de la abstracción. Tome eval, puede ajustar su definición en una pizarra, pero lo único útil es enseñarle sobre un aspecto de la computación, es decir, definir recursivamente algo en sí mismo. La utilidad de ese conocimiento es mucho menor que la utilidad de lo que eval permite. –

Respuesta

12

Soy ese tipo. :)

Fexprs, al igual que en el lenguaje del kernel, simplificar considerablemente el idioma - Kernel tiene sólo tres muebles empotrados: $ definir! (para agregar un nuevo enlace a un entorno), $ if (lo usual) y $ vau (similar a lambda, pero no evalúa sus argumentos).

Además, las macros (fexprs) se pueden usar como funciones, a diferencia de los Lisps actuales, donde las macros trabajan separadas del tiempo de ejecución. Esto hace que el lenguaje sea más general.

Dicho esto, hasta el momento no hay aplicaciones del mundo real escritas en Kernel u otro nuevo Lisp con fexprs. Esta es un área de retoques activos por un puñado de personas.

+0

Me interesa, ya que siempre he encontrado que la distinción entre macros y funciones es demasiado arbitraria. ¿Qué tan fácil sería agregar esto (experimentalmente) a Clojure? – mikera

+2

Probablemente muy difícil. Los Fexprs requieren interpretación, ya que hasta el momento no se conocen medios para compilarlos de manera eficiente. [Esta publicación de blog] (http://axisofeval.blogspot.com/2011/06/john-shutts-blog.html) contiene consejos para las discusiones de LtU donde las personas hablan sobre problemas de implementación. –

+0

¿Entendí bien que este enfoque solo es adecuado para la interpretación? –

Cuestiones relacionadas