Copyright Noel Welsh 2012-2024.
Artwork by Jenny Clements.
Published by Inner Product.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Portions of Functional Programming Strategies in Scala with Cats are based on Scala with Cats by Dave Pereira-Gurnell and Noel Welsh, which is licensed under CC BY-SA 4.0.
Functional Programming Strategies teaches the core concepts and techniques for building practical software in a functional programming style.
The build requires a lot of heavy machinery: texlive, node, java, scala, and pandoc and pandoc-crossref. There are all installed as part of the CI job that builds the book. This is always kept up to date, so refer to it for dependencies and their installation.
Once you have the dependencies installed, run sbt
to open an SBT prompt.
From within sbt
you can issue the following commands:
pdf
builds a PDF version indist/scala-with-cats.pdf
;html
builds an HTML version indist/scala-with-cats.html
;epub
builds an ePub version indist/scala-with-cats.epub
;all
builds all three versions.
The pdf
, html
, and epub
commands are each made of three smaller commands:
{foo}Setup
creates temp directories and builds JS/CSS prerequisites for the HTML/ePub versions;mdoc
runs the files insrc/pages
through mdoc to compile and run the Scala snippets;{foo}Pandoc
runs the output ofmdoc
through pandoc to produce the output.
There are also tex
and json
commands
(and commands like texSetup
, jsonPandoc
, and so on)
that build a LaTeX version of the book and a Pandoc AST respectively.
These are useful for debugging the build.
If you spot a typo or mistake, please feel free to fork the repo and submit a Pull Request. Add yourself to contributors.md to ensure we credit you for your contribution.
If you don't have time to submit a PR or you'd like to suggest a larger change to the content or structure of the book, please raise an issue instead.