HListPP: A preprocessor for HList labelable labels
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
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
Properties
Versions | 0.1, 0.2, 0.2.1, 0.2.2, 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:40:10Z |
Downloads
- HListPP-0.2.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees