Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
|
- (define-module set
- :imports ("cxr.slime")
- :exports (make find contains? insert!)
-
- (define key-not-found-index -1)
-
- (define (make . vals)
- (set-type!
- (if vals
- (list vals)
- '(()))
- :set))
-
- (define (find set val)
- (let ((values (car set)))
- (define (inner values current-index)
- (cond ((null? values) key-not-found-index)
- ((= (car values) val) current-index)
- (else (inner (cdr values) (+ 1 current-index)))))
- (inner values 0)))
-
- (define (contains? set val)
- (unless (= (find set val) key-not-found-index)
- t))
-
- (define (insert! set value)
- (unless (contains? set value)
- (set! set (pair (pair value (first set)) ()))
- (set-type! set :set))
- set)
- )
|