~ chicken-core (chicken-5) 1557f5a4992c9b676474bdde36719f04b3eeab94
commit 1557f5a4992c9b676474bdde36719f04b3eeab94
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Sat Jan 24 12:52:39 2015 +0100
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Sat Jan 24 12:52:39 2015 +0100
chicken-ffi-syntax.scm: use mini-srfi-1.scm and dropped use of 3-arg fold-right
diff --git a/chicken-ffi-syntax.scm b/chicken-ffi-syntax.scm
index d3fc79b9..b9bda358 100644
--- a/chicken-ffi-syntax.scm
+++ b/chicken-ffi-syntax.scm
@@ -38,8 +38,9 @@
(no-bound-checks)
(no-procedure-checks))
-(##sys#provide
- 'chicken-ffi-syntax)
+(include "mini-srfi-1.scm")
+
+(##sys#provide 'chicken-ffi-syntax)
(define ##sys#chicken-ffi-macro-environment
(let ((me0 (##sys#macro-environment)))
@@ -122,20 +123,22 @@
(list (cons a (cddr b)))
'() ) )
bindings aliases)
- ,(fold-right
- (lambda (b a rest)
- (if (= 3 (length b))
- `(##core#let-location
- ,(car b)
- ,(cadr b)
- ,a
- ,rest)
- `(##core#let-location
- ,(car b)
- ,(cadr b)
- ,rest) ) )
- `(##core#let () ,@body)
- bindings aliases) ) ) ) ) )
+ ,(let loop ((bindings bindings) (aliases aliases))
+ (if (null? bindings)
+ `(##core#let () ,@body)
+ (let ((b (car bindings))
+ (a (car aliases))
+ (rest (loop (cdr bindings) (cdr aliases))))
+ (if (= 3 (length b))
+ `(##core#let-location
+ ,(car b)
+ ,(cadr b)
+ ,a
+ ,rest)
+ `(##core#let-location
+ ,(car b)
+ ,(cadr b)
+ ,rest) ) ))))))))
;;; Embedding code directly:
Trap