~ 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