Haskell Module
All we actually declare here is the top-level structure for a module.
Constructors
HsModulehsmodExt :: XCModule pHsModule extension point
hsmodName :: Maybe (XRec p ModuleName)Nothing: "module X where" is omitted (in which case the next field is Nothing too)hsmodExports :: Maybe (XRec p [LIE p])Export list
Nothing: export list omitted, so export everythingJust []: export nothingJust [...]: as you would expect...
hsmodImports :: [LImportDecl p]hsmodDecls :: [LHsDecl p]Type, class, value, and interface signature decls
XModule !(XXModule p)