diff options
author | Tom Smeding <t.j.smeding@uu.nl> | 2025-03-03 16:02:24 +0100 |
---|---|---|
committer | Tom Smeding <t.j.smeding@uu.nl> | 2025-03-03 16:02:24 +0100 |
commit | 9fa67dd485ba033c0adfdfe1ef9265a066a2caff (patch) | |
tree | b044ba933485176491c79a6d6c40db5c99b80ece /haskell/cabal-lib.md | |
parent | a5e5452dffd34837ebb228244edefbcb5df1b94f (diff) |
Diffstat (limited to 'haskell/cabal-lib.md')
-rw-r--r-- | haskell/cabal-lib.md | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/haskell/cabal-lib.md b/haskell/cabal-lib.md index 6b6c7ca..dc3b79e 100644 --- a/haskell/cabal-lib.md +++ b/haskell/cabal-lib.md @@ -1,6 +1,6 @@ ## About `cabal install --lib` -**TL;DR: Don't use it, add the library to your <code>*package-name*.cabal</code> or `package.yaml` instead, or use a [cabal script](https://cabal.readthedocs.io/en/3.10/getting-started.html#run-a-single-file-haskell-script). After you learn more about the downsides, you can reconsider. See the "What to do instead" section below.** +**TL;DR: Don't use it, add the library to your <code>*package-name*.cabal</code> or `package.yaml` instead, or use a [cabal script](https://cabal.readthedocs.io/en/3.10/getting-started.html#run-a-single-file-haskell-script), or use `cabal repl -b`. After you learn more about the downsides, you can reconsider. See the "What to do instead" section below.** --- @@ -150,7 +150,16 @@ Removing the entire store folder for a particular GHC version is safe, however - ## What to do instead -Create a project! +If you just wanted a `ghci` session with some libraries in scope, use e.g. `cabal repl -b parsec -b time`. +(`-b A` is short for `--build-depends=A`.) +This will build those packages, if necessary, and then start a `ghci` session with those packages in scope. + +If you want something slightly more permanent than a single `ghci` session, you can make a _cabal script_. +This allows you to effectively make a self-contained project inside a single Haskell file. +You specify the dependencies in a special comment block at the top of the file. +See [the documentation](https://cabal.readthedocs.io/en/3.10/getting-started.html#run-a-single-file-haskell-script) for more details. + +If you want more than that: create a project! The intended mode of operation of the modern Haskell tooling, that is `cabal` or `stack`, is to always work inside of a _project_. Often, "project" basically means "package", but you can have projects with multiple packages in them (using a `cabal.project` file, see [the docs](https://cabal.readthedocs.io/en/3.10/cabal-project.html)). @@ -169,9 +178,4 @@ You can also add [version bounds](https://cabal.readthedocs.io/en/3.10/cabal-pac (If you want to use `stack` instead of `cabal`, try [their getting started guide](https://docs.haskellstack.org/en/stable/GUIDE/).) - -### An even lighter-weight alternative - -An alternative to creating a project is to make a _cabal script_: this allows you to effectively make a self-contained project inside a single Haskell file. -You specify the dependencies in a special comment block at the top of the file. -See [the documentation](https://cabal.readthedocs.io/en/3.10/getting-started.html#run-a-single-file-haskell-script) for more details. +_Edited 2025-03-03 to include `cabal repl` as an alternative._ |