diff options
author | Ludovic Courtes | 2005-10-31 23:26:24 +0000 |
---|---|---|
committer | Ludovic Courtes | 2005-10-31 23:26:24 +0000 |
commit | 052c10245a523aa714489bda59e18a6c1a4f473e (patch) | |
tree | 36f6d93a9e53bb51342244d76ba4c965cf642ac4 /src/guile/skribilo/lib.scm | |
parent | 89a424521b753ee7c2c67ebdc957865657f647c4 (diff) | |
download | skribilo-052c10245a523aa714489bda59e18a6c1a4f473e.tar.gz skribilo-052c10245a523aa714489bda59e18a6c1a4f473e.tar.lz skribilo-052c10245a523aa714489bda59e18a6c1a4f473e.zip |
Installed Autoconf/Automake machinery. Fixed a few things.
* src/guile/skribilo/evaluator.scm (skribe-load): Search through
`%load-path' and try with a `.scm' extension (rather than the `.skr'
one provided by the user).
(skribe-include): Added a few debugging statements.
* src/guile/skribilo/lib.scm (fix-rest-arg): Handle the dot notation for
rest arguments.
* src/guile/skribilo/reader/skribe.scm (%make-skribe-reader): Use
SQUARE-BRACKET-FREE-SYMBOL-MISC-CHARS.
* src/guile/skribilo/skribe/index.scm: Use `define-public' instead of
`define'.
* src/guile/skribilo/packages/*.scm: Moved to `skribilo/package'.
* LICENSE: Removed.
* COPYING: New.
* AUTHORS: New.
* NEWS: New.
* ChangeLog: New.
* configure.ac: New.
* Makefile.am: New. In various directories.
git-archimport-id: lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2--patch-10
Diffstat (limited to 'src/guile/skribilo/lib.scm')
-rw-r--r-- | src/guile/skribilo/lib.scm | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/guile/skribilo/lib.scm b/src/guile/skribilo/lib.scm index 8667f7e..d916db4 100644 --- a/src/guile/skribilo/lib.scm +++ b/src/guile/skribilo/lib.scm @@ -99,12 +99,23 @@ (let loop ((args args) (result '()) (rest-arg #f)) - (if (null? args) - (if rest-arg (append (reverse result) rest-arg) (reverse result)) - (let ((is-rest-arg? (eq? (car args) #:rest))) - (loop (if is-rest-arg? (cddr args) (cdr args)) - (if is-rest-arg? result (cons (car args) result)) - (if is-rest-arg? (list (car args) (cadr args)) rest-arg)))))) + (cond ((null? args) + (if rest-arg + (append (reverse result) rest-arg) + (reverse result))) + + ((list? args) + (let ((is-rest-arg? (eq? (car args) #:rest))) + (loop (if is-rest-arg? (cddr args) (cdr args)) + (if is-rest-arg? result (cons (car args) result)) + (if is-rest-arg? + (list (car args) (cadr args)) + rest-arg)))) + + ((pair? args) + (loop '() + (cons (car args) result) + (list #:rest (cdr args))))))) (let ((name (car bindings)) (opts (cdr bindings))) |