=========================================
Module Declaration
=========================================

module A where

---

(module (module_identifier) (where))

=========================================
Module Declaration Empty Exports
=========================================

module A () where

---

(module
  (module_identifier)
  (module_exports)
  (where))

=========================================
Module Declaration With Exports
=========================================

module A (Maybe(..), type(:<), type(+), Either(fromEither, either), maybe', module A, type Foo,) where

---

(module
  (module_identifier)
  (module_exports
    (export (type_constructor_identifier) (all_constructors))
    (export (type_constructor_export (constructor_operator (constructor_symbol))))
    (export (type_constructor_export (variable_operator (variable_symbol))))
    (export (type_constructor_identifier) (variable_identifier) (variable_identifier))
    (export (variable_identifier))
    (export (module_export (module_identifier)))
    (export (type_constructor_export (constructor_identifier))))
  (where))

=========================================
Module Declaration With Hierarchy
=========================================

module A.B' where

---

(module
  (qualified_module_identifier
    (module_identifier)
    (module_identifier))
  (where))
