Julia has been designed to tackle problems arising in science and statistics. It follows the route of traditional imperative languages. It is not a functional language, such as
Clojure, but since it incorporates a Scheme interpreter, it is possible to create runtime macros rather than the preprocessor style ones found in C/C++.
Macros are useful in efficiently generating boilerplate code, and we have already made use of the
@printf macro, which emulates the C-style
If a true functional approach is required, the reader is directed to the
Lazy.jl package, which implements lazily evaluated lists plus a library of functions to use them and many well-designed macros. So, to get a grasp of Julia metaprogramming, ...