Usually done with cabal or stack.
cabal
https://cabal.readthedocs.io/en/latest/cabal-commands.html
- Install a package:
cabal install
- Update package index (ie, list of available packages):
cabal update
- Upgrade cabal itself:
cabal install cabal-install
(Unverified) - Build project:
cabal build
- Build and run project:
cabal run
- Open a REPL for the built project:
cabal repl
- Open a REPL with some packages available:
cabal repl --build-depends package1, package2
cabal repl -b package1, package2
- Start a new project interactively:
cabal init -i
- Build haddock documentation:
cabal haddock
- Download a package without adding it to a project:
cabal get <package-name>
- List all installed packages:
cabal list --installed
—
Example use:
cabal init -i
# Edit <name>.cabal:
# - include dependencies in build-depends (seperated by commas)
cabal build
Install an executable tool
cabal install --install-method=copy <package-name>
The executable will be at ~/.cabal/bin/
Eg:
cabal install --install-method=copy pandoc
# Executable would be at ~/.cabal/bin/pandoc
Tests
- Install dependencies for testing:
cabal install --enable-tests
- Run tests:
cabal test
See:
- https://functional.works-hub.com/learn/basic-unit-testing-in-haskell-using-hunit-and-cabal-29e47
- http://gbacon.blogspot.com/2009/06/setting-up-simple-test-with-cabal.html
- https://jade.fyi/blog/cabal-test-dev-trick/
- https://yanhan.github.io/posts/2013-12-22-cabal-installing-test-dependencies/
- https://discourse.haskell.org/t/help-setting-up-cabal-project-with-hunit-tests/2306/5
New package example
cabal init
cabal update
cabal configure
cabal install
cabal build
cabal exec ghci