<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">From: &quot;Hauschild, Klaus (EXT)&quot;<br>
<br>
Hi Haskellers,<br>
<br>
is there a recommended structure for Haskell projects. I like the Maven way (<a href="http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html" target="_blank">http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html</a>) for Java projects. How to separate productive from test code, how to separate source code from other resources?<br>
</blockquote><div><br></div><div>I like the way the Snap-framework is organized:</div><div><br></div><div>./</div><div>./src/</div><div>./test/</div><div>./test/data/</div><div>./test/suite/</div><div>./snap-framework.cabal</div>
<div><br></div><div>Then if you have e.g.</div><div>./src/Snap/Types.hs</div><div><br></div><div>the tests go in</div><div>./tests/suite/Snap/Types/Tests.hs</div><div><br></div><div>Basically &quot;src&quot; is for all productive code, &quot;test&quot; is for tests of that code.  I sometimes add these to the top level:</div>
<div>./tools</div><div>./resources</div><div><br></div><div>&quot;tools&quot; is for code generators or similar tools that auto-generate stuff to go in ./src which cabal doesn&#39;t know about.  &quot;resources&quot; would be data files, images, or similar resources that get bundled with the distribution.</div>
<div><br></div><div>John L.</div></div>