X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=README.html;h=09672cf9c2a342a0b6d12736fcb8dd76ea5cd0e3;hb=9dd10342313cd00b9f87444451a45a92e20895de;hp=4680985b3e88c2857a65071527aa1009c9f59821;hpb=6d3d9662f4481a1dae36c7ab9705b376bc7c7025;p=advent-of-code-19.git diff --git a/README.html b/README.html index 4680985..09672cf 100644 --- a/README.html +++ b/README.html @@ -12,7 +12,7 @@ <div id="header"> <h1 class="title">Advent of Code 2019</h1> </div> -<p>Code to solve the <a href="http://adventofcode.com/2019/">Advent of Code</a> puzzles. This year, I'm using the puzzles to develop my skills in <a href="https://wiki.haskell.org/Haskell">Haskell</a>.</p> +<p>Code to solve the <a href="http://adventofcode.com/2019/">Advent of Code</a> puzzles. This year, I'm using the puzzles to develop my skills in <a href="https://wiki.haskell.org/Haskell">Haskell</a>. I'm writing up a <a href="https://work.njae.me.uk/tag/advent-of-code/">commentary on these puzzles and my solutions</a> on my blog.</p> <p><a href="http://learnyouahaskell.com/chapters">Learn you a Haskell</a>, <a href="https://www.haskell.org/tutorial/index.html">Introduction to Haskell 98</a>, and <a href="https://hackage.haskell.org/">Hackage</a> are good resources.</p> <p>The <a href="https://docs.haskellstack.org/en/stable/README/">Stack documentation</a> and <a href="http://howistart.org/posts/haskell/1/">How I Start: Haskell</a> are good sources of using the tools.</p> <h1 id="toolchain">Toolchain</h1> @@ -20,15 +20,15 @@ <pre><code>$ sudo aptitude install haskell-platform haskell-stack</code></pre> <p>), then updgrade with</p> <pre><code> stack upgrade --binary-only</code></pre> -<p>as the version in the Ubuntu repos is too old to work with current Haskell Stack package sets. ##</p> +<p>as the version in the Ubuntu repos is too old to work with current Haskell Stack package sets.</p> <h2 id="creating-the-repository-and-project">Creating the repository and project</h2> <p>Create the repository as normal: create the project in Gitolite, clone it, and insert the <code>.gitignore</code> and <code>README.md</code> files.</p> -<p>There's just one package, with the code in sub-directories of the <code>src</code> directory. Each day will generate one (or more) entries in the <code>adventofcode17.cabal</code> file.</p> +<p>There's one package per day, with the code for each package in sub-directories of the root directory.</p> <p>Create the basic <code>stack</code> 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 <code>advent-of-code</code></p> <pre><code>stack new advent-of-code --bare simple</code></pre> <p>Modify the <code>stack.yaml</code> file as needed, such as adding the <code>ghc-options</code> stanza.</p> <h2 id="creating-subsequent-days">Creating subsequent days</h2> -<p>Each day lives in a separate directory within the <code>src</code> directory. It will also need it's own stanza in <code>advent-of-code.cabal</code>.</p> +<p>Each day lives in a separate directory, with its own <code>package.yaml</code> file and code in the <code>src</code> directory. (I based this configuration from <a href="https://github.com/mstksg/advent-of-code-2018">mstksg's setup</a>.)</p> <p>Compile with</p> <pre><code>stack build</code></pre> <p>or</p> @@ -39,10 +39,13 @@ <pre><code>stack exec -- advent01 +RTS -K0 -RTS</code></pre> <p>Run interactively with</p> <pre><code>stack ghci advent01</code></pre> +<p>or</p> +<pre><code>stack ghci advent01:exe:advent01</code></pre> +<p>if the first form is ambiguous.</p> <p>To profile, use</p> -<pre><code>stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts"</code></pre> +<pre><code>stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts" advent01</code></pre> <p>then run with</p> -<pre><code>stack exec -- advent01 +RTS -p -hy</code></pre> +<pre><code>stack exec --profile -- advent01 +RTS -p -hy</code></pre> <p>Generate the profile graph with</p> <pre><code>stack exec hp2ps advent01.hp</code></pre> <h1 id="packages">Packages</h1> @@ -52,10 +55,6 @@ <p>to see how the <code>stack.yaml</code> file needs to change, and</p> <pre><code>stack solver --update-yaml</code></pre> <p>to implement the changes.</p> -<h1 id="ihaskell">IHaskell</h1> -<p>Install following the <a href="https://github.com/gibiansky/IHaskell">IHaskell instructions</a>.</p> -<p>Run it with</p> -<pre><code>stack exec jupyter -- notebook</code></pre> <h1 id="readme">Readme</h1> <p>Build this readme file wth</p> <pre><code>pandoc -s README.md > README.html</code></pre>