1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-11 14:21:10 +02:00
guile/module/language/elisp
Daniel Kraft a90d9c855d Don't pass the bindings-data all around in compile-tree-il, but use fluids for this dynamic binding.
* module/language/elisp/compile-tree-il.scm: Use fluid for bindings-data.
2009-07-24 10:40:07 +02:00
..
runtime Implemented dynamic symbol access built-ins (set, fset, symbol-value, makunbound...) 2009-07-23 14:09:55 +02:00
bindings.scm Don't ensure fluids all over the place but scan for variables needed and ensure just before the compiled code all those. 2009-07-21 16:45:10 +02:00
compile-tree-il.scm Don't pass the bindings-data all around in compile-tree-il, but use fluids for this dynamic binding. 2009-07-24 10:40:07 +02:00
README Don't pass the bindings-data all around in compile-tree-il, but use fluids for this dynamic binding. 2009-07-24 10:40:07 +02:00
runtime.scm Implemented dynamic symbol access built-ins (set, fset, symbol-value, makunbound...) 2009-07-23 14:09:55 +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
  * set, symbol-value, makunbound, boundp functions
  * fset, symbol-function, fmakunbound, fboundp
  * while, dotimes, dolist
  * catch, throw, unwind-protect
  * 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:
  * real elisp reader instead of Scheme's
  * more general built-ins
  * funcall and apply functions
  * advice?
  * defsubst and inlining
  * recursive macros
  * anonymous macros

Other ideas and things to think about:
  * %nil vs. #f/'() handling in Guile
  * lexical-let and/or optional lexical binding as extensions
  * compiler options for all lexical binding, no void checks

Extensions over original elisp:
  * (guile-ref module symbol) construct to build a (@ module symbol) from elisp
  * flet and flet*