diff options
author | Andy Wingo <wingo@pobox.com> | 2009-08-06 11:48:16 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-08-06 11:48:16 +0200 |
commit | bca488f186ce662e8c41b8ac1675fa2f03bb3fc2 (patch) | |
tree | 15612791ec3c07cbef673a133841f227bf28e262 /module/srfi/srfi-11.scm | |
parent | 4dcd84998fc61e15920aea83c4420c7357b9be46 (diff) | |
download | guile-bca488f186ce662e8c41b8ac1675fa2f03bb3fc2.tar.gz |
actually inline call-with-values to tree-il's <let-values>
* module/srfi/srfi-11.scm (let-values): In the one-clause case, avoid
going through temporary variables.
* module/language/tree-il/inline.scm (inline!): Add another case:
(call-with-values (lambda () ...) (lambda ... ...) -> let-values.
* module/language/tree-il/compile-glil.scm (flatten): Fix a bug
compiling applications in "vals" context.
* module/language/tree-il/analyze.scm (analyze-lexicals): Fix a couple
bugs with let-values and rest arguments.
Diffstat (limited to 'module/srfi/srfi-11.scm')
-rw-r--r-- | module/srfi/srfi-11.scm | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/module/srfi/srfi-11.scm b/module/srfi/srfi-11.scm index 8a41d00f7..22bda21a2 100644 --- a/module/srfi/srfi-11.scm +++ b/module/srfi/srfi-11.scm @@ -67,6 +67,9 @@ (define-syntax let-values (lambda (x) (syntax-case x () + ((_ ((binds exp)) b0 b1 ...) + (syntax (call-with-values (lambda () exp) + (lambda binds b0 b1 ...)))) ((_ (clause ...) b0 b1 ...) (let lp ((clauses (syntax (clause ...))) (ids '()) |