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 pos
Instead 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 | 3054 total (8 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] |