diff --git a/examples/err.myc b/examples/err.myc deleted file mode 100644 index 2d57995..0000000 --- a/examples/err.myc +++ /dev/null @@ -1,34 +0,0 @@ -(do - (def SMA - (fn [length] - (do - (def history (series :float)) - (def sum 0.0) - - (fn [val] - (do - (def hist_len (len history)) - (if (>= hist_len length) - (assign sum (- sum (history (- hist_len 1)))) - ...) - - (push history val) - (assign sum (+ sum val)) - (/ sum (len history)) - ))))) - - (def sma10 (SMA 10)) - -(sma10 1) -(sma10 2) -(sma10 3) -(sma10 4) -(sma10 5) -(sma10 6) -(sma10 7) -(sma10 8) -(sma10 9) -(sma10 10) -(sma10 11) - -) \ No newline at end of file diff --git a/examples/sma.myc b/examples/sma.myc index 4047f6d..a8133f9 100644 --- a/examples/sma.myc +++ b/examples/sma.myc @@ -1,24 +1,12 @@ +;; Output: 5.5 + (do - (def SMA - (fn [length] - (do - (def history (series :float)) - (push history 0) - - (fn [val] - (do - (def sum (+ val (history 0))) - (push history sum) - (/ sum length) - )) - ))) - (def sma20 (SMA 20)) - (def n 100) - (while (> n 0) - (do + (def n 1000) + (while (> n 0) + (do (print "val=" n " sma20=" (sma20 n)) (assign n (- n 1)) )) -) \ No newline at end of file +) diff --git a/lib/sma.myc b/lib/sma.myc new file mode 100644 index 0000000..cca8d12 --- /dev/null +++ b/lib/sma.myc @@ -0,0 +1,20 @@ +(do + (def SMA + (fn [length] + (do + (def history (series :float)) + (def sum 0.0) + + (fn [val] + (do + (def hist_len (len history)) + (if (>= hist_len length) + (assign sum (- sum (history (- length 1))))) + + (push history val) + (assign sum (+ sum val)) + + (if (>= hist_len length) + (/ sum length)) + ))))) +)