X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;ds=inline;f=README.html;h=58b7faf5fb3ced72624c6e226b7d913bee9839d3;hb=1ceda81b1ea28546d796dafa288067d09b9c7313;hp=6f80db8e882bb84de24ad5ddd8cbb9eb2cda0bec;hpb=3a599e34c0ddccec3e5c5d20a11fad920e4628c9;p=advent-of-code-17.git diff --git a/README.html b/README.html index 6f80db8..58b7faf 100644 --- a/README.html +++ b/README.html @@ -14,35 +14,42 @@
Code to solve the Advent of Code puzzles. This year, I'm using the puzzles to develop my skills in 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, togeher with Stack
to manage the packages and dependencies (install with
I'm using the basic Haskell Platform installation, togeher with stack
to manage the packages and dependencies (install with
$ sudo aptitude install haskell-platform haskell-stack
).
Create the repository as normal: create the project in Gitolite, clone it, and insert the .gitignore
and README.md
files.
Within the project directory, there will be one package for each day. This will save time waiting for stack
to check every executable before compiling what's changed. Each package needs a separate directory tree and a separate .cabal
file.
Then create the basic stack
project with it. 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 initial project will have to be adventofcode1701
stack new adventofcode1701 simple
-This project will be demoted to being a package, but one that will hold the overall project.
-Then create the top-level stack.yaml
file to hold the overall project information.
stack init
-Modify this top-level stack.yaml
file as needed, such as adding the ghc-options
stanza. You can then delete adventofcode1701/stack.yaml
.
Each package needs a separate directory tree and a separate .cabal
file.
To work on a project, cd
into that project's directory.
There's just one package, with the code in sub-directories of the src
directory. Each day will generate one (or more) entries in the adventofcode17.cabal
file.
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 advent-of-code --bare simple
+Modify the stack.yaml
file as needed, such as adding the ghc-options
stanza.
Each day lives in a separate directory within the src
directory. It will also need it's own stanza in advent-of-code.cabal
.
Compile with
stack build
or
-stack build adventofcode1701
+stack build advent01
Run with
stack exec advent01
Run interactively with
-stack ghci adventofcode1701:exe:advent01
+stack ghci advent-of-code:exe:advent01
To profile, use
stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts" adventofcode1601
then run with
stack exec -- advent01 +RTS -p -hy
+Stack is using the 9.14-lts resolver for packages, so make sure you read the correct documentation for the packages included in it.
+When you use a new package, use
+stack solver
+to see how the stack.yaml
file needs to change, and
stack solver --update-yaml
+to implement the changes.
+Install following the IHaskell instructions.
+Run it with
+stack exec jupyter -- notebook
Build this readme file wth
pandoc -s README.md > README.html