1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-23 04:50:28 +02:00
guile/module/language/elisp
Daniel Kraft fb66a47a8e Implemented prog1, prog2, dotimes, dolist control structures.
* module/language/elisp/README: Document it and some further ideas written down.
* module/language/elisp/compile-tree-il.scm: Implement prog1, dolist.
* module/language/elisp/runtime/macro-slot.scm: prog2 and dotimes.
* test-suite/tests/elisp-compiler.test: Test prog1, prog2, dotimes, dolist.
2009-07-20 20:52:00 +02:00
..
runtime Implemented prog1, prog2, dotimes, dolist control structures. 2009-07-20 20:52:00 +02:00
compile-tree-il.scm Implemented prog1, prog2, dotimes, dolist control structures. 2009-07-20 20:52:00 +02:00
README Implemented prog1, prog2, dotimes, dolist control structures. 2009-07-20 20:52:00 +02:00
runtime.scm Implemented some important list built-ins. 2009-07-18 20:10:24 +02:00
spec.scm Merge branch 'master' of git://git.savannah.gnu.org/guile into elisp 2009-06-27 20:07:11 +02:00

Guile's Emacs Lisp compiler
===========================

This is more or less a lot of work in progress.  Here are some notes as well
as status information.

Already implemented:
  * progn, prog1, prog2
  * if, cond, when, unless
  * not, and, or
  * referencing and setting (setq) variables
  * while, dotimes, dolist
  * let, let*
  * lambda expressions, function calls using list notation
  * some built-ins (mainly numbers/arithmetic)
  * defconst, defvar, defun
  * macros
  * quotation and backquotation with unquote/unquote-splicing

Especially still missing:
  * catch/throw, unwind-protect
  * real elisp reader instead of Scheme's
  * set, makunbound, boundp functions
  * more general built-ins
  * funcall and apply functions
  * fset & friends, defalias functions
  * advice?
  * defsubst and inlining
  * need fluids for function bindings?
  * recursive macros
  * anonymous macros

Other ideas and things to think about:
  * %nil vs. #f/'() handling in Guile, possibly get rid of setting empty rest
    arguments to %nil
  * don't ensure-fluids for variables known to be let- or argument-bound
  * or, perhaps, get rid of ensure-fluids over all but rather scan all code for
    variables and create all needed fluids beforehand