t3x.org / nss / list-to-set.html

(Nils' Scheme Snippets)

 
Paren matching: ON  |  Category: math  |  Overview  |  Scheme Books  |  License
 

(list->set list) => list

 
Purpose
Convert list to set. A set is a list containing only unique members.
 
Arguments
a list
 
Example
(list->set '(a b c b c)) => (a b c)
(define (list->set a)
  (letrec
    ((l->s
       (lambda (a r)
         (cond ((null? a)
                 (reverse r))
               ((member (car a) r)
                 (l->s (cdr a) r))
               (else (l->s (cdr a)
                           (cons (car a) r)))))))
    (l->s a '())))

Copyright (C) 2007 Nils M Holm <nmh @ t3x . org>