We saw how important functions are in idiomatic Julia code. While not a pure functional language, Julia shares many features with such languages. In particular, functions in Julia are first class entities, and they can passed around to other functions to create higher-order functions. A canonical example of such a higher-order function is the map
function, which evaluates the given function over each element of the provided collection.
As you would expect from a language with these functional features, it is also possible to create closures and anonymous functions in Julia. Anonymous functions, as the name suggests, are functions without a name, and they are usually created at the point where they are passed in to another function as an argument. In Julia, they are created with the ->
operator separating the arguments from the function body. These, and named functions created within the scope of another function, and referring to variables from this outer...