From d61e9162f7500822e4e4cffe67a838776782ee35 Mon Sep 17 00:00:00 2001 From: Daphne Preston-Kendal Date: Fri, 18 Oct 2024 19:41:42 +0200 Subject: [PATCH] Add `(rnrs lists)` --- lib/rnrs/lists.sld | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 lib/rnrs/lists.sld diff --git a/lib/rnrs/lists.sld b/lib/rnrs/lists.sld new file mode 100644 index 00000000..9ced280d --- /dev/null +++ b/lib/rnrs/lists.sld @@ -0,0 +1,35 @@ +(library (rnrs lists) + (export find + (rename every for-all) + (rename any exists) + filter partition + fold-left + fold-right + (rename remove remp) + (rename rnrs:remove remove) + remv + remq + (rename find-tail memp) + member + memv + memq + assp + assoc + assv + assq + cons*) + (import (scheme base) + (srfi 1)) + + (define (fold-left kons knil . lss) + (apply fold + (lambda args + (apply kons (last args) (drop-right args 1))) + knil lss)) + + (define (rnrs:remove obj ls) (remove (lambda (x) (equal? x obj)) ls)) + (define (remv obj ls) (remove (lambda (x) (eqv? x obj)) ls)) + (define (remq obj ls) (remove (lambda (x) (eq? x obj)) ls)) + + (define (assp proc alist) + (find (lambda (x) (proc (car x))) alist)))