Work transfer
This commit is contained in:
+31
-31
@@ -1,31 +1,31 @@
|
||||
(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)
|
||||
)
|
||||
(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)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user