We have now seen how you can leverage two types of techniques, subtyping using polymorphic variants and OOP-style inheritance with modules, to improve your code structure and make it easy to add behavior to types.
With polymorphic variant types, we can reuse constructors for different types because of their design. Furthermore, it is possible to extend a polymorphic variant type to create a new one.
With modules, we can open an existing module to use functions and bindings defined in it, and we can include it in a new module to extend its behavior line in OOP-style inheritance.
In the next and last chapter, we are going to go through a final example where we bring together the main techniques we have learned so far.