Work transfer

This commit is contained in:
Felix Brendel
2020-02-18 10:52:05 +01:00
parent 7aa492df67
commit 7c220ed9d6
72 changed files with 19257 additions and 19094 deletions
+31 -31
View File
@@ -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)
)