Fraser Wilson wrote:
> Good question.  I often need to export a name to other modules within the
> hierarchy, but without making them visible outside it.  I've "solved" this
> problem by giving them funky names and adding a comment, but is there a more
> structured way to do this?  A quick google hasn't found one yet.

Assuming you're writing a cabal package, you could separate the interface
from the actual implementation:

------------------------------------------------------------------------
module Hello (
    hello
) where

import Hello.Impl
------------------------------------------------------------------------
module Hello.Impl (
    hello,
    hello_internal
) where

hello, hello_internal :: String
hello = "Hello, world!"

hello_internal = "The secret word is 'puddleplum'."
------------------------------------------------------------------------

and then list Hello.Impl under extra-modules instead of exposed-modules
in the cabal file, which will hide it from external users. Internal
users can just use Hello.Impl directly.

HTH,

Bertram
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to