Así que ahora tengo un intérprete bastante completo de LISP (esquema) escrito en haskell. Solo por diversión, quiero intentar que se compile hasta LLVM. La mayor parte de la generación de código parece bastante sencilla, pero no sé cómo generar código para una expresión lambda
(algo importante en lisp;) y cómo administrar el montón cuando encuentro una expresión define
.Generando código LLVM para 'lambda', 'define'
¿Cómo podría generar código para estas expresiones?
Nota: Puedo generar código para el cuerpo de la expresión lambda, Lo que me confunde es cómo "poner" ese código en algún lugar y hacerlo invocable.
Es posible que desee implementar un pase de elevación lambda explícito antes de la generación de su código (y dado que es Scheme, es probable que esté haciendo una transformación CPS antes de eso) . Te dejará solo con las funciones globales y una asignación explícita de envorons de cierre. –