diff options
Diffstat (limited to 'module')
-rw-r--r-- | module/hnh/util.scm | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/module/hnh/util.scm b/module/hnh/util.scm index 7509fc86..d5923e79 100644 --- a/module/hnh/util.scm +++ b/module/hnh/util.scm @@ -58,6 +58,11 @@ assq-ref-all assv-ref-all + uniq + univ + uniqv + unique + vector-last ->string @@ -543,6 +548,20 @@ (define (assv-ref-all alist key) (ass%-ref-all alist key eqv?)) +(define (unique% = lst) + (cond ((null? lst) lst) + ((null? (cdr lst)) lst) + ((and (pair? lst) + (= (car lst) (cadr lst))) + (uniq (cons (car lst) (cddr lst)))) + (else (cons (car lst) + (uniq (cdr lst)))))) + +(define (uniq lst) (unique% eq? lst)) +(define (uniqv lst) (unique% eqv? lst)) +(define univ uniqv) +(define (unique lst) (unique% equal? lst)) + (define (vector-last v) |