[Haskell-beginners] hierarchy of modules

Stephen Tetley stephen.tetley at gmail.com
Sat Oct 31 15:33:53 EDT 2009


Hello Mike


An option I like is to put the main project files in a top level
directory called src, so your organization would look like this:

./src/Algo/Fux.hs
./src/Basics/CSound.hs
./src/Basics/Node.hs

I usually have a running example which has imports for all the files
in the project inside a top level folder called demo...

./demo/ImportAll.hs

For a GHCi session, I cd to $PROJECT/demo then

> ghci

Prelude> set -i../src

This is the useful bit of having all the project files under the src
hierarchy - the search path is very simple.

During development adding the files needed for cabal (Setup.hs,
project.cabal...) is still worthwhile - you can then generate
Haddock docs very easily. If you used Haddock in standalone mode you
would have to supply a few flags to tell which files to
document and where to put the output.

Each time you add or remove a module in the src tree, you should
re-run configure...

> runhaskell Setup.hs configure
> runhaskell Setup.hs haddock

but as your GHCi session is always using the interpreted project
source you don't need to run 'runhaskell Setup.hs build' and
'runhaskell Setup.hs install'.

Best wishes

Stephen


More information about the Beginners mailing list