psyntax, primitive expander, and memoizer support for letrec*
authorAndy Wingo <wingo@pobox.com>
Thu, 17 Jun 2010 09:12:58 +0000 (11:12 +0200)
committerAndy Wingo <wingo@pobox.com>
Thu, 17 Jun 2010 11:43:26 +0000 (13:43 +0200)
commit826373a25d71173f0f5045c61dc5854910cf1a80
treea851907357f7b01926a42b3c97d2744a8571915b
parentfb6e61ca21b397308474a6a553f7d502d0113251
psyntax, primitive expander, and memoizer support for letrec*

* libguile/expand.c (expand_letrec_helper): Factor out common code.
  (expand_letrec): Use expand_letrec_helper.
  (expand_letrec_star): New primitive syntax: letrec*.

* libguile/memoize.c (memoize): Add memoizer support for in-order letrec
  (letrec*).

* module/ice-9/psyntax.scm (build-letrec): Another arg, `in-order?'.
  (chi-body): Adapt to build-letrec change. We don't yet use letrec* for
  internal definitions.
  (letrec): Adapt to build-letrec change.
  (letrec*): New expander.

* module/ice-9/psyntax-pp.scm: Regenerated.
libguile/expand.c
libguile/memoize.c
module/ice-9/psyntax-pp.scm
module/ice-9/psyntax.scm