public/private module sections (was: Haskell-prime Digest, Vol 2, Issue 58)

John Meacham john at
Fri Feb 24 17:12:38 EST 2006

what about method and data constructors?

data public: Foo a = private: Bob | public: Baz

class Foo a where
        foo :: a
        baz :: a

I really like haskell's current module system. A whole lot. other than
the minor tweaks that have been mentioned. A really nice thing is that
it is all about the namespace. unlike other languages, like java where
your namespace is intrinsically linked to your class hierarchy, or C++
where bringing names into scope implies textual inclusion of arbitrary
code, haskell has the wonderful property that the module system is
purely about matching identifiers to their meaning. A side effect of
this is that you can determine what names are in scope purely by by
looking at the export/import lists of your modules and there is never a
need nor a reason to look anywhere else. it is all nice and
self-contained right there at the top of each module. moving to
individual annotations would be a large step backwards IMHO.


John Meacham - ⑆⑆john⑈

More information about the Haskell-prime mailing list