Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define (stat-set)
- (let ((internal-set (list)))
- (let ((current-max 0))
- (let ((current-min 0))
- (let ((current-length 0))
- (let ((current-average 0))
- (define (empty)
- (empty? internal-set)
- )
- (define (insert n)
- (set! internal-set
- (append (list n) internal-set))
- (update)
- )
- (define (delete n)
- (set! internal-set (delete-helper n internal-set))
- (update)
- )
- (define (element? n)
- (define (element-helper n set)
- (cond ((null? set)
- #f)
- ((= n (car set))
- #t)
- (else
- (element-helper n (cdr set))))
- )
- (element-helper n internal-set)
- )
- (define (largest)
- current-max
- )
- (define (smallest)
- current-min
- )
- (define (size)
- current-length
- )
- (define (average)
- current-average
- )
- (define (update)
- (set-largest)
- (set-smallest)
- (set-length)
- (set-average)
- )
- (define (set-largest)
- (define (max-help list)
- (cond ((null? (cdr list))
- (car list))
- ((< (car list) (max-help (cdr list))) (max-help (cdr list)))
- (else (car list)))
- )
- (set! current-max (max-help internal-set))
- )
- (define (set-smallest)
- (define (min-help list)
- (cond ((null? (cdr list)) (car list))
- ((< (car list) (min-help (cdr list))) (car list))
- (else (min-help (cdr list))))
- )
- (set! current-min (min-help internal-set))
- )
- (define (set-length)
- (set! current-length (length internal-set))
- )
- (define (set-average)
- (define (sum list)
- (if (null? list)
- 0
- (+ (car list) (sum (cdr list))))
- )
- (set! current-average (/ (sum internal-set) current-length))
- )
- (lambda (method)
- (cond ((eq? method 'empty?) empty)
- ((eq? method 'insert) insert)
- ((eq? method 'delete) delete)
- ((eq? method 'element?) element?)
- ((eq? method 'largest) largest)
- ((eq? method 'smallest) smallest)
- ((eq? method 'size) size)
- ((eq? method 'average) average))))))))
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement