From: "Hauschild, Klaus (EXT)"
Hi Haskellers,
is there a recommended structure for Haskell projects. I like the Maven way (http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html) for Java projects. How to separate productive from test code, how to separate source code from other resources?
I like the way the Snap-framework is organized:
./
./src/
./test/
./test/data/
./test/suite/
./snap-framework.cabal
Then if you have e.g.
./src/Snap/Types.hs
the tests go in
./tests/suite/Snap/Types/Tests.hs
Basically "src" is for all productive code, "test" is for tests of that code. I sometimes add these to the top level:
./tools
./resources
"tools" is for code generators or similar tools that auto-generate stuff to go in ./src which cabal doesn't know about. "resources" would be data files, images, or similar resources that get bundled with the distribution.
John L.