24 lines
611 B
Common Lisp
24 lines
611 B
Common Lisp
;; lexical-binding: t
|
|
(require 'generator)
|
|
|
|
(iter-defun std-dev-gen (lst)
|
|
(let ((sum 0)
|
|
(avg 0)
|
|
(tmp '())
|
|
(std 0))
|
|
(dolist (i lst)
|
|
(setq i (float i))
|
|
(push i tmp)
|
|
(setq sum (+ sum i))
|
|
(setq avg (/ sum (length tmp)))
|
|
(setq std 0)
|
|
(dolist (j tmp)
|
|
(setq std (+ std (expt (- j avg) 2))))
|
|
(setq std (/ std (length tmp)))
|
|
(setq std (sqrt std))
|
|
(iter-yield std))))
|
|
|
|
(let* ((test-data '(2 4 4 4 5 5 7 9))
|
|
(generator (std-dev-gen test-data)))
|
|
(dolist (i test-data)
|
|
(message "with %d: %f" i (iter-next generator))))
|