HListPP: A preprocessor for HList labelable labels
A preprocessor that replaces `longDescriptiveName with
hLens' (Label :: Label "longDescriptiveName")
Use with ghc flags -F -pgmF HListPP. A file using HListPP
could start with something like
❴-# OPTIONS_GHC -F -pgmF HListPP #-❵ -- change braces to ascii (haddock doesn't allow literal comments in files) ❴-# LANGUAGE DataKinds #-❵ import Data.HList.CommonMain import Control.Lens
Then the labels can then be used in expressions with types like:
`x :: Lens (Record S) (Record T) a b `x :: Prism (Variant S) (Variant T) a b `a .==. "x" .*. `b .==. "y" .*. emptyRecord :: Record [ Tagged "a" String, Tagged "b" String ]
where S is a type-level list containing a Tagged "x" a
and T is a type-level list containing a Tagged "x" b.
Note that `labels is expanded to something that
takes up about 26 more columns. To avoid issues with
layout, put a newline after keywords that introduce
layout, at least if there are `labels in the same row.
In other words:
`character.`position.`x %= \ x -> let
msg = "a really long message about x>0"
pos = x - 5
in if pos < 0
then error msg
else posInstead of
`character.`position.`x %= \ x -> let msg = "a really long message about x>0"
pos = x - 5
in if pos < 0
then error msg
else pos
Downloads
- HListPP-0.2.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.1, 0.2, 0.2.1, 0.2.2 |
|---|---|
| Change log | ChangeLog |
| Dependencies | base (>=4.9 && <5), regex-applicative (>=0.3 && <0.4) [details] |
| License | BSD-3-Clause |
| Author | Adam Vogt <vogt.adam@gmail.com> |
| Maintainer | Adam Vogt <vogt.adam@gmail.com> |
| Category | Development |
| Home page | http://github.com/aavogt/HListPP |
| Source repo | head: git clone http://github.com/aavogt/HListPP |
| Uploaded | by AdamVogt at 2020-04-17T17:41:08Z |
| Distributions | NixOS:0.2.2 |
| Reverse Dependencies | 1 direct, 0 indirect [details] |
| Executables | HListPP |
| Downloads | 3140 total (11 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs not available [build log] Last success reported on 2020-04-17 [all 2 reports] |