aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-09-18 23:01:57 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2022-09-18 23:01:57 +0200
commit326490cf13949b176708d517de491daff88a77ed (patch)
tree006fc47ae3d9a6a4f4d08a94193dbb7b9ec27fdc
parentAdd some items to TODO. (diff)
downloadcalp-326490cf13949b176708d517de491daff88a77ed.tar.gz
calp-326490cf13949b176708d517de491daff88a77ed.tar.xz
Add uniq to hnh/util.
-rw-r--r--module/hnh/util.scm19
1 files changed, 19 insertions, 0 deletions
diff --git a/module/hnh/util.scm b/module/hnh/util.scm
index d2c0dd5f..3a2621d1 100644
--- a/module/hnh/util.scm
+++ b/module/hnh/util.scm
@@ -55,6 +55,12 @@
assq-ref-all
assv-ref-all
+ uniqx
+ uniq
+ univ
+ uniqv
+ unique
+
vector-last
->string
@@ -506,6 +512,19 @@
(define (assv-ref-all alist key) (ass%-ref-all alist key eqv?))
+(define (uniqx = lst)
+ (cond ((null? lst) lst)
+ ((null? (cdr lst)) lst)
+ ((and (pair? lst)
+ (= (car lst) (cadr lst)))
+ (uniqx = (cons (car lst) (cddr lst))))
+ (else (cons (car lst)
+ (uniqx = (cdr lst))))))
+
+(define (uniq lst) (uniqx eq? lst))
+(define (univ lst) (uniqx eqv? lst))
+(define (unique lst) (uniqx equal? lst))
+
(define (vector-last v)