summaryrefslogtreecommitdiff
path: root/module/srfi/srfi-11.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-08-06 11:48:16 +0200
committerAndy Wingo <wingo@pobox.com>2009-08-06 11:48:16 +0200
commitbca488f186ce662e8c41b8ac1675fa2f03bb3fc2 (patch)
tree15612791ec3c07cbef673a133841f227bf28e262 /module/srfi/srfi-11.scm
parent4dcd84998fc61e15920aea83c4420c7357b9be46 (diff)
downloadguile-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.scm3
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 '())