Advertisement
Olenji

Untitled

Apr 17th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. (define (stat-set)
  2. (let ((internal-set (list)))
  3. (let ((current-max 0))
  4. (let ((current-min 0))
  5. (let ((curent-length 0))
  6. (let ((current-average 0))
  7. (define (empty)
  8. (empty? internal-set)
  9. )
  10. (define (insert n)
  11. (set! internal-set
  12. (append (list n) internal-set))
  13. (set-largest)
  14. (set-smallest)
  15. (set-length)
  16. (set-average)
  17. )
  18. (define (element? n)
  19. (define (element-helper n set)
  20. (cond ((null? set)
  21. #f)
  22. ((= n (car set))
  23. #t)
  24. (else
  25. (element-helper n (cdr set))))
  26. )
  27. (element-helper n internal-set)
  28. )
  29. (define (largest)
  30. current-max
  31. )
  32. (define (smallest)
  33. current-min
  34. )
  35. (define (size)
  36. current-length
  37. )
  38. (define (average)
  39. current-average
  40. )
  41. (define (set-largest)
  42. (define (max-help list)
  43. (if (null? (cdr list))
  44. (car list)
  45. (if (< (car list) (max-help (cdr list)))
  46. (max-help (cdr list))
  47. (car list)))
  48. )
  49. (set! current-max (max-help internal-list))
  50. )
  51. (define (set-smallest)
  52. (define (min-help list)
  53. (cond ((null? (cdr list)) (car list))
  54. ((< (car list) (min-help (cdr list))) (car list))
  55. (else (min-help (cdr list))))
  56. )
  57. (set! current-min (min-help internal-list))
  58. )
  59. (define (set-length)
  60. (set! current-length (length internal-set))
  61. )
  62. (define (set-average)
  63. current-average
  64. )
  65. (lambda (method)
  66. (cond ((eq? method 'empty?) empty)
  67. ((eq? method 'insert) insert)
  68. ((eq? method 'element?) element?)
  69. ((eq? method 'largest) largest)
  70. ((eq? method 'smallest) smallest)
  71. ((eq? method 'size) size)
  72. ((eq? method 'average) average))))))))
  73. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement