X-Git-Url: https://git.njae.me.uk/?p=advent-of-code-19.git;a=blobdiff_plain;f=README.md;h=1c6a5d4af3b3be64c8e9a9c71ede59bac3fc73d3;hp=4430c77d886bfae6ca59c787d11f96a4db3c2ec9;hb=HEAD;hpb=3add87c991ec85f531c2cffea142b00c52d274a6 diff --git a/README.md b/README.md index 4430c77..1c6a5d4 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ title: "Advent of Code 2019" output: html_document css: modest.css --- -Code to solve the [Advent of Code](http://adventofcode.com/2019/) puzzles. This year, I'm using the puzzles to develop my skills in [Haskell](https://wiki.haskell.org/Haskell). +Code to solve the [Advent of Code](http://adventofcode.com/2019/) puzzles. This year, I'm using the puzzles to develop my skills in [Haskell](https://wiki.haskell.org/Haskell). I'm writing up a [commentary on these puzzles and my solutions](https://work.njae.me.uk/tag/advent-of-code/) on my blog. [Learn you a Haskell](http://learnyouahaskell.com/chapters), [Introduction to Haskell 98](https://www.haskell.org/tutorial/index.html), and [Hackage](https://hackage.haskell.org/) are good resources. @@ -20,12 +20,11 @@ $ sudo aptitude install haskell-platform haskell-stack stack upgrade --binary-only ``` as the version in the Ubuntu repos is too old to work with current Haskell Stack package sets. -## ## Creating the repository and project 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 sub-directories of the `src` directory. Each day will generate one (or more) entries in the `adventofcode17.cabal` file. +There's one package per day, with the code for each package in sub-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` @@ -37,9 +36,7 @@ Modify the `stack.yaml` file as needed, such as adding the `ghc-options` stanza. ## Creating subsequent days -Each day lives in a separate directory within the `src` directory. It will also need it's own stanza in `advent-of-code.cabal`. - -Stack configuration taken from https://github.com/mstksg/advent-of-code-2018 +Each day 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](https://github.com/mstksg/advent-of-code-2018).) Compile with ``` @@ -64,14 +61,19 @@ Run interactively with ``` stack ghci advent01 ``` +or +``` +stack ghci advent01:exe:advent01 +``` +if the first form is ambiguous. To profile, use ``` -stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts" +stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts" advent01 ``` then run with ``` -stack exec -- advent01 +RTS -p -hy +stack exec --profile -- advent01 +RTS -p -hy ``` Generate the profile graph with ``` @@ -93,16 +95,6 @@ stack solver --update-yaml ``` to implement the changes. -# IHaskell - -Install following the [IHaskell instructions](https://github.com/gibiansky/IHaskell). - -Run it with - -``` -stack exec jupyter -- notebook -``` - # Readme Build this readme file wth