* libguile/eval.c (s_macro_keyword): New static identifier.
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Mon, 26 Apr 2004 19:59:03 +0000 (19:59 +0000)
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Mon, 26 Apr 2004 19:59:03 +0000 (19:59 +0000)
commit36245b66c222110c84b04e14733614055dc36575
tree883014b85dc7f93d5221c9a90bbd261f32a2303e
parentda8bcb2f709cecc6fea17c2396541b1ab601755d
* libguile/eval.c (s_macro_keyword): New static identifier.

(scm_m_define): Change order to first create binding and
evaluating the expression afterwards.

(scm_m_set_x): Memoize complete set! expression.  Only leave
symbols if no binding exists at memoization time.  Throw error if
assigning to a syntactic keyword.

(lazy_memoize_variable): New function.

(CEVAL): When execution set!, perform lazy memoization if
unmemoized symbol is detected.

* libguile/modules.c (module_variable): Return variables with
unbound value.

* libguile/tags.h: Fix comment.

* test-suite/tests/syntax.test: Add test case to check the correct
handling of define expressions.
libguile/ChangeLog
libguile/eval.c
libguile/modules.c
libguile/tags.h
test-suite/ChangeLog
test-suite/tests/syntax.test