d2cba2d55d
The `series` constructor now only accepts the `lookback` limit. The element type is inferred by the type checker and implicitly added as a schema argument during compilation. This simplifies the API and centralizes type inference. This change also includes: - Updates to example scripts (`HMA.myc`, `sma.myc`, `soa_series.myc`) to reflect the new `series` signature. - Modifications to the `TypeChecker` to handle the inferred schema injection. - An addition of a regression test for type inference through nested closures with `series`. - Removal of `#[allow(dead_code)]` from several `TypeChecker` methods as they are now used. - Update to `rtl/prelude.myc` macro `cache`. - Update to `rtl/series/mod.rs` to reflect new signature. - Update to `ast/types.rs` to allow `series` to be indexed with an integer to retrieve its element type.
22 lines
621 B
Plaintext
22 lines
621 B
Plaintext
;; Skip: work in progress — requires external RTL module (SMA not yet implemented)
|
|
#use rtl
|
|
|
|
(do
|
|
(def src (create-random-ohlc 42 200))
|
|
|
|
(macro printx [s] `(fn [x] (print ~s x)))
|
|
|
|
(pipe src print)
|
|
(pipe [(pipe [(.close src)] (SMA 20))] (printx "sma20="))
|
|
(pipe [(pipe [(.close src)] (SMA 5))] (printx "sma5="))
|
|
(pipe [(pipe [(.close src)] (SMA 100))] (printx "sma100="))
|
|
|
|
(macro cache [lookback src] `(do (def data (series ~lookback)) (pipe [~src] (fn [s] (do (push data s)))) data))
|
|
|
|
; (def bars (series 20))
|
|
; (pipe [src] (fn [s] (do (push bars (.close s)))))
|
|
|
|
(cache 20 src)
|
|
|
|
)
|