uniq.ss

Scheme

Public Domain

Return only the unique elements of a (pre-sorted) list

Download (right click, save as, rename as appropriate)

Embed

1
2
3
4
5
6
(define (uniq li)  ; The list `li' must be pre-sorted.
 (let loop ((accum '()) (stuff li))
  (if (null? stuff) (reverse accum)
   (loop (if (or (null? accum) (not (eqv? (car accum) (car stuff))))
    (cons (car stuff) accum) accum)
    (cdr stuff)))))