Ви не можете вибрати більше 25 тем
Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
|
- (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 (cons (cons value (car set)) ()))
- (set-type! set :set))
- set)
- )
|