Hopefully, you've taken away a broader scope of the available Clojure functions, and how to use them to access, update, and compose data structures. This applies to scalars, collection types, and composite data types. You should also have a good grasp of I/O operations, which are Clojure's options when dealing with concurrency and parallelism and an understanding of the difference between the two.
We also stepped back and compared our Clojure simple-moving-average
function to equivalent versions in an object-oriented language (Java) and a purely functional, statically typed language (Haskell). This is all meant to orient you to Clojure's approach to computation and the different trade-offs that it makes.
The next chapter will consider our existing data structures output from the generate-prices
, simple-moving-average
, exponential-moving-average
, and bollinger-band
functions, and store each tick progression for later look ups. We'll also deal with IO
and its side effects and the best way to contain them.
18.191.14.93