Skip to content

Latest commit

 

History

History
67 lines (48 loc) · 2.75 KB

README.md

File metadata and controls

67 lines (48 loc) · 2.75 KB

Haskell build

Course on functional programming - Haskell

This course was/is being given at Telecom Nancy in 2021, 2022, 2023, and 2024 in 3A.

If you have attended this course, please join the Telecom Nancy Functional Alumnis LinkedIn group 👈 which I use to post job ads in companies I work with.

Online version

Visit https://smelc.github.io/tn-fp-haskell-course/slides/

Offline version, for writing the slides

The slides folder uses remark. To display the slides (be it for presenting or for developing them), you need to serve the slides directory with an http server:

python3 -m http.server  # in slides/
# Or use ./run.sh

Now, crawl localhost:8000 and open the various html files.

Note that it's possible to develop the slides offline, as per the instruction on the remark wiki. But I've never done it.

Development instruction

These instructions are more hermetic than the ones in tps. This is intentional. ⚠️ If you are here to do the travaux pratiques, use the instructions in tps ⬅️

  • The Haskell compiler (GHC) is installed in an isolated manner, in bin/ghc (see below)
  • This requires ghcup in PATH and that's all
  • When started from this directory, the vscode Haskell extension will install the required language server on its own, so nothing to do here.
mkdir -p bin/{cabal,ghc,hls}
# Instal cabal, this matches PATH_ADD $(pwd)/bin/ghc/bin in .envrc
ghcup install cabal --isolate $(pwd)/bin/cabal
# Populate GHC, this matches PATH_ADD $(pwd)/bin/ghc/bin in .envrc
# Note that GHC's version number is also in .github/workflows/haskell.yml
ghcup install ghc 9.4.7 --isolate $(pwd)/bin/ghc
ghcup install hls --isolate $(pwd)/bin/hls

Because there is a cabal.project file that pins the set of packages to a specific timestamp, this project is highly reproducible.

To validate code snippets within slides, see slides/README.md.


This course is funded by my employer: Modus Create