If we had to choose the most important thing to learn in Julia, or in any programming language, then it has to be the concept of the data type. Abstract types and concrete types work together, providing the programmer with a powerful tool to model solutions to solve real-world problems. Multiple dispatch rely on well-defined data types to invoke the right functions. Parametric types are used so that we can reuse the basic structure of an object with a specific physical representation of the underlying data. As you can see, having a well-thought-out design for data types is of the utmost importance in software engineering practice.
In Chapter 2, Modules, Packages, and Data Type Concepts, we learned about the basics of abstract and concrete types and how to build a type hierarchy based upon an inheritance relationship between the types. In Chapter 3...