From 326490cf13949b176708d517de491daff88a77ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sun, 18 Sep 2022 23:01:57 +0200 Subject: Add uniq to hnh/util. --- module/hnh/util.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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) -- cgit v1.2.3