This is the repository for the paper. There is a separate repository for the artifact: notional-machines.
Because a version of the artifact is necessary to build the paper,
this paper repository also includes a packaged version of the artifact
that is ready to install and referred to in the cabal.project
file.
To build the paper, do the following:
- Install GHCup (https://www.haskell.org/ghcup/)
- Install Haskell and Cabal (using ghcup)
- Install the artifact and the Haskell Diagrams library
cabal update
cabal install -fpgf diagrams-builder
cabal install --lib diagrams-builder diagrams-lib diagrams-pgf notional-machines mtl prettyprinter --package-env=./
- Install (lhs2tex)
cabal install lhs2tex
- Build the paper
make
To build the paper in continuous compilation style use:
while true; do fswatch -1 main.tex sections/*.tex sections/*.lhs; make; done
If you need to install a new version of the artifact you need to remove the environment manually first, and maybe remove the cache created by diagrams-latex (there's gotta be a better way to do this, but I couldn't find it).
rm .ghc.environment.x86_64-darwin-9.0.2
rm -r .diagrams_cache
- The uses of equational reasoning are formatted with Literate Haskell using lhs2tex.
- We use our artifact to produce many of the concrete representations of notional machines used in the paper. The artifact produces these concrete representations using the Haskell diagrams library. The diagrams are embedded directly into the tex files using diagrams-latex.