595bcf09e5
The `PipelineNode` has been refactored into `StreamNode`. This commit updates the example files to reflect this change and also updates the `series` constructor to accept a lookback parameter. The `PipelineNode` was an artifact of a previous implementation and is no longer needed. The `StreamNode` is the appropriate type for representing the output of a pipe operation. The `series` function now requires a `lookback` argument to specify the maximum number of items to store. This makes the behavior of series more explicit and prevents accidental unbounded memory growth.
21 lines
449 B
Plaintext
21 lines
449 B
Plaintext
(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))
|
|
)))))
|
|
)
|