summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--module/Makefile.am7
-rw-r--r--module/rnrs/6/lists.scm40
2 files changed, 44 insertions, 3 deletions
diff --git a/module/Makefile.am b/module/Makefile.am
index dbcc40505..8e52a3d4b 100644
--- a/module/Makefile.am
+++ b/module/Makefile.am
@@ -260,14 +260,15 @@ RNRS_SOURCES = \
rnrs/6/conditions.scm \
rnrs/6/control.scm \
rnrs/6/exceptions.scm \
+ rnrs/6/lists.scm \
rnrs/6/syntax-case.scm \
rnrs/arithmetic/6/bitwise.scm \
rnrs/bytevector.scm \
+ rnrs/io/6/simple.scm \
+ rnrs/io/ports.scm \
rnrs/records/6/inspection.scm \
rnrs/records/6/procedural.scm \
- rnrs/records/6/syntactic.scm \
- rnrs/io/ports.scm \
- rnrs/io/6/simple.scm
+ rnrs/records/6/syntactic.scm
EXTRA_DIST += scripts/ChangeLog-2008
EXTRA_DIST += scripts/README
diff --git a/module/rnrs/6/lists.scm b/module/rnrs/6/lists.scm
new file mode 100644
index 000000000..7544a7346
--- /dev/null
+++ b/module/rnrs/6/lists.scm
@@ -0,0 +1,40 @@
+;;; lists.scm --- The R6RS list utilities library
+
+;; Copyright (C) 2010 Free Software Foundation, Inc.
+;;
+;; This library is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU Lesser General Public
+;; License as published by the Free Software Foundation; either
+;; version 3 of the License, or (at your option) any later version.
+;;
+;; This library is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; Lesser General Public License for more details.
+;;
+;; You should have received a copy of the GNU Lesser General Public
+;; License along with this library; if not, write to the Free Software
+;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+(library (rnrs lists (6))
+ (export find for-all exists filter partition fold-left fold-right remp remove
+ remv remq memp member memv memq assp assoc assv assq cons*)
+ (import (rnrs base (6))
+ (only (guile) (filter member memv memq assoc assv assq cons*))
+ (only (srfi srfi-1) (find partition fold-right filter-map))
+ (rename (srfi srfi-1) (fold fold-left)
+ (any exists)
+ (every for-all)
+ (remove remp)
+
+ (member memp-internal)
+ (assoc assp-internal)))
+
+ (define (remove obj list) (remp (lambda (elt) (equal? obj elt)) list))
+ (define (remv obj list) (remp (lambda (elt) (eqv? obj elt)) list))
+ (define (remq obj list) (remp (lambda (elt) (eq? obj elt)) list))
+
+ (define (memp pred list) (memp-internal #f list pred))
+ (define (assp pred list) (assp-internal #f list pred))
+)