To export the type and all its constructors, one must use the following syntax:
module X (Person (..)) where
So, for the following top-level definitions in a file called People.hs
:
data Person = Friend String | Foe deriving (Show, Eq, Ord)
isFoe Foe = True
isFoe _ = False
This module declaration at the top:
module People (Person (..)) where
would only export Person
and its constructors Friend
and Foe
.
If the export list following the module keyword is omitted, all of the names bound at the top level of the module would be exported:
module People where
would export Person
, its constructors, and the isFoe
function.