<commit_before>## The Haskell Tool Stack

stack is a build tool for Haskell code. It is:

* designed from the ground up to support common workflows many developers
  encounter in the real world, such as multi-package projects and shared
  package databases

* robust by default, ensuring that separate projects cannot corrupt other
  package databases (no explicit sandboxing required)

* user friendly, making standard operations simple and performing necessary
  prerequisites automatically, like installing dependencies and reconfiguring

* modular, taking advantage of existing high quality projects like [LTS
  Haskell](https://github.com/fpco/lts-haskell),
  [Stackage](https://www.stackage.org/),
  [all-cabal-hashes](https://github.com/commercialhaskell/all-cabal-hashes) and
  [the S3 Haskell package
  mirror](https://www.fpcomplete.com/blog/2015/03/hackage-mirror)

* explicit about changes to your install plan; updating the list of available
  packages will never cause `stack` to suddenly corrupt and reinstall your
  packages

stack chooses sensible defaults wherever possible (such as preferring LTS
Haskell snapshots) while allowing simple user customization (such as switching
to either Stackage Nightly or manual package dependency selection). It will
download and install GHC for you on many common platforms, or use your
preexisting installation.

### Getting started

Getting started is easy; download the `stack` executable **FIXME add link once
we have a release** and put it on your PATH. You can then run `stack build`
from any package directory. `stack` leverages the `Cabal` library and supports
all of your existing projects with `.cabal` files. It will automatically
inspect your project and find a suitable LTS Haskell or Stackage Nightly
snapshot to build against, if available. Some commonly used commands:

* `stack build` will create a stack.yaml file if necessary (see below), install
  necessary package dependencies to a shared location, and build your package

* `stack test` and `stack bench` are the same as `stack build`, but
  additionally run test suites or benchmarks when complete.

* `stack setup` will install whatever version of GHC necessary to build your
  project (NOTE: stack will automatically check what version of GHC your
  project requires and compare it to the GHCs available)

* `stack exec` will run a command with your `PATH` and `GHC_PACKAGE_PATH`<commit_msg>Forward reference to snapshot auto-detection<commit_after>## The Haskell Tool Stack

stack is a build tool for Haskell code. It is:

* designed from the ground up to support common workflows many developers
  encounter in the real world, such as multi-package projects and shared
  package databases

* robust by default, ensuring that separate projects cannot corrupt other
  package databases (no explicit sandboxing required)

* user friendly, making standard operations simple and performing necessary
  prerequisites automatically, like installing dependencies and reconfiguring

* modular, taking advantage of existing high quality projects like [LTS
  Haskell](https://github.com/fpco/lts-haskell),
  [Stackage](https://www.stackage.org/),
  [all-cabal-hashes](https://github.com/commercialhaskell/all-cabal-hashes) and
  [the S3 Haskell package
  mirror](https://www.fpcomplete.com/blog/2015/03/hackage-mirror)

* explicit about changes to your install plan; updating the list of available
  packages will never cause `stack` to suddenly corrupt and reinstall your
  packages

stack chooses sensible defaults wherever possible (such as preferring LTS
Haskell snapshots) while allowing simple user customization (such as switching
to either Stackage Nightly or manual package dependency selection). It will
download and install GHC for you on many common platforms, or use your
preexisting installation.

### Getting started

Getting started is easy; download the `stack` executable **FIXME add link once
we have a release** and put it on your PATH. You can then run `stack build`
from any package directory. `stack` leverages the `Cabal` library and supports
all of your existing projects with `.cabal` files. It will automatically
inspect your project and find a suitable LTS Haskell or Stackage Nightly
snapshot to build against, if available (see "snapshot auto-detection" below).
Some commonly used commands:

* `stack build` will create a stack.yaml file if necessary (see below), install
  necessary package dependencies to a shared location, and build your package

* `stack test` and `stack bench` are the same as `stack build`, but
  additionally run test suites or benchmarks when complete.

* `stack setup` will install whatever version of GHC necessary to build your
  project (NOTE: stack will automatically check what version of GHC your
  project requires and compare it to the GHCs available)

* `stack exec` will run a command with your `PATH` and `GHC_PACKAGE_PATH`
{'fraction_non_alphanumeric': 0.056584571544880925, 'fraction_numerical': 0.0028495827396702628, 'mean_word_length': 4.88502994011976, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 8, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1807710', 'n_tokens_mistral': 1263, 'n_tokens_neox': 1205, 'n_words': 649}