diff options
author | Profpatsch <mail@profpatsch.de> | 2023-04-08T12·19+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-04-08T12·25+0000 |
commit | 80e04da5d43002f9ffa9fa041a9123342e8a0a90 (patch) | |
tree | 202172fe53a5bb0e0cba9139b1dde424f03ebde7 /users/Profpatsch/my-prelude/README.md | |
parent | 260626e0165b9b6ca330d75f830d06fa08b5d4b7 (diff) |
docs(users/Profpatsch): Add small README to most subdirs r/6083
Change-Id: I2912e32fe1b2d3d3aff7bafba809634ec4c9adb6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8470 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
Diffstat (limited to 'users/Profpatsch/my-prelude/README.md')
-rw-r--r-- | users/Profpatsch/my-prelude/README.md | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/users/Profpatsch/my-prelude/README.md b/users/Profpatsch/my-prelude/README.md new file mode 100644 index 000000000000..8173d76680a5 --- /dev/null +++ b/users/Profpatsch/my-prelude/README.md @@ -0,0 +1,38 @@ +# My Haskell Prelude + +Contains various modules I’ve found useful when writing Haskell. + +## Contents + +A short overview: + +### `MyPrelude.hs` + +A collection of re-exports and extra functions. This does *not* replace the `Prelude` module from `base`, but rather should be imported *in addition* to `Prelude`. + +Stuff like bad functions from prelude (partial stuff, or plain horrible stuff) are handled by a custom `.hlint` file, which you can find in [../.hlint.yaml](). + +The common style of haskell they try to enable is what I call “left-to-right Haskell”, +where one mostly prefers forward-chaining operators like `&`/`<&>`/`>>=` to backwards operators like `$`/`<$>`/`<=<`. In addition, all transformation function should follow the scheme of `aToB` instead of `B.fromA`, e.g. `Text.unpack`/`Text.pack` -> `textToString`/`stringToText`. Includes a bunch of text conversion functions one needs all the time, in the same style. + +These have been battle-tested in a production codebase of ~30k lines of Haskell. + +### `Label.hs` + +A very useful collection of anonymous labbeled tuples and enums of size 2 and 3. Assumes GHC >9.2 for `RecordDotSyntax` support. + +### `Pretty.hs` + +Colorful multiline pretty-printing of Haskell values. + +### `Test.hs` + +A wrapper around `hspec` which produces colorful test diffs. + +### `Aeson.hs` + +Helpers around Json parsing. + +### `Data.Error.Tree` + +Collect errors (from [`Data.Error`](https://hackage.haskell.org/package/error-1.0.0.0/docs/Data-Error.html)) into a tree, then display them in a nested fashion. Super useful for e.g. collecting and displaying nested parsing errors. |