Code to start conversations about Haskell.
Learn you a Haskell, Introduction to Haskell 98, and Hackage are good resources.
The Stack documentation and How I Start: Haskell are good sources of using the tools.
I'm using the basic Haskell Platform installation, together with stack to manage the packages and dependencies (install with
$ sudo aptitude install haskell-platform haskell-stack
), then updgrade with
stack upgrade --binary-only
as the version in the Ubuntu repos is too old to work with current Haskell Stack package sets.
Create the repository as normal: create the project in Gitolite, clone it, and insert the .gitignore and README.md files.
There's just one package, with the code in the src directories of the root directory.
Create the basic stack project. This will create a new directory. Note that this new directory name can't have a hyphen-delimited word that's just digits, so the project will have to be advent-of-code
stack new eva-demo --bare simple
Modify the stack.yaml file as needed, such as adding the ghc-options stanza.
Each package lives in a separate directory, with its own package.yaml file and code in the src directory. (I based this configuration from mstksg's setup.)
Compile with
stack build
or
stack build main
Run with
stack exec main
If you want to pass in additional RTS parameters, do it like this:
stack exec -- main +RTS -K0 -RTS
Run interactively with
stack ghci main
or
stack ghci main:exe:main
if the first form is ambiguous.
To profile, use
stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts" advent01
then run with
stack exec --profile -- advent01 +RTS -p -hy
Generate the profile graph with
stack exec hp2ps advent01.hp
Stack is using the lts-16.10 resolver for packages, so make sure you read the correct documentation for the packages included in it.