Modules allow us to encapsulate business logic like let bindings or types into logical entities. In ReasonML every file is a module. Names have to be unique though per project. This is quite opinionated compared to other languages. Sub-modules also can be created using the module
keyword. In addition to that ReasonML supports interface files that not only describe let bindings, functions and their types, but also enforce visibility of those. In this lesson we explore all of these features step by step without getting overwhelmed.