row-types
Open Records and Variants
https://github.com/dwincort/row-types
LTS Haskell 22.42: | 1.0.1.2@rev:1 |
Stackage Nightly 2024-11-21: | 1.0.1.2@rev:1 |
Latest on Hackage: | 1.0.1.2@rev:1 |
row-types-1.0.1.2@sha256:4d4c7cb95d06a32b28ba977852d52a26b4c1f695ef083a6fd874ab6d79933b64,3071
Module documentation for 1.0.1.2
Row-Types
Row-types is a library of open records and variants for Haskell using closed type families and type literals (among other things…). See examples/Examples.lhs for a literate Haskell file that functions as an overview of how this library can be used, and check out the website for further examples.
Available on Hackage.
This work is a branch from CTRex [1,2] with other inspiration from data-diverse [3]. My thanks to the authors and contributors of those libraries!
[1] https://wiki.haskell.org/CTRex
[2] https://hackage.haskell.org/package/CTRex/docs/Data-OpenRecords.html
[3] https://hackage.haskell.org/package/data-diverse
Changes
1.0.1.2 [2021-09-10]
- Update Stack to use GHC 8.10.7
- Fix a few warnings
- Minor updates to support GHC 9.0.1
1.0.1.1 [2021-09-09]
- Improved type checking performance on Diff and Merge (Thanks ak3n!)
1.0.1.0 [2021-05-06]
- Fixed a critical bug in certain values in
Dictionaries
that could cause segfaults. - Reimplemented and simplified
Subset
. - Adjusted basic type families to better handle simple cases (affected families are
.\
,Extend
,.+
,.\/
,.//
). - Export
mapSingleA
inData.Row.Variants
. - Improved kind polymorphism and simplify a few constraints (Thanks Strake!).
- Improved type checking performance (Thanks UlfNorell!)
1.0.0.0 [2020-09-12]
This release has many breaking changes, specifically to metamorph
and some functions related to Variant
, hence the major version bump to 1.0
. However, users that only use basic features of records may not notice a difference.
- Removed
metamorph'
andbiMetamorph'
in favor of generalizingmetamorph
over choice of bifunctor. - Removed “unsafe” functions (
unsafeRemove
andunsafeInjectFront
fromRecords
andunsafeMarkVar
andunsafeInjectFront
fromVariants
). - Removed
Switch
class, reimplementing theswitch
function usingBiForall
. - Swap the order of the result of calling
trial
,multiTrial
, andsplit
. - Added new functions to
Records
:lazyRemove
,curryRec
,(.$)
,zipTransform
,zipTransform'
,traverse
,traverseMap
,distribute
, andcoerceRec
. - Added new functions to
Variants
:fromLabelsMap
,traverse
,traverseMap
, andcoerceVar
. - Added
Dictionaries
module, full of axioms that are helpful for usingmetamorph
. Moved axioms fromInternal
toDictionaries
(in some cases, the type variable order has changed). - Added
ApSingle
type family as well aseraseSingle
,mapSingle
, anderaseZipSingle
(thanks Jordan Woehr!). - Improved error messages.
Note: GHC 8.4 and earlier are no longer officially supported in row-types 1.0.0.0.
0.4.0.0 [2020-05-20]
- Renamed
toNative
totoNativeGeneral
andtoNativeExact
totoNative
for records and likewise forfromNative
for variants. - Added a type family
NativeRow
which, when given any generic type that can go throughfromNative
, is equal to the row-type of the resulting record/variant. Note thatNativeRow
is defined separately (and differently!) for records vs variants, so it is exported at theData.Row.Records
/Variants
level but not atData.Row
. - Added
coerceRec
andcoerceVar
to coerce the row-types of records and variants respectively. - Exposed
BiForall
inData.Row
,Data.Row.Records
, andData.Row.Variants
- (Internal) Rewrote internal
Generic
code to use an associated type family instead of a standalone one.
Note: GHC 8.2 and earlier are no longer officially supported in row-types 0.4.0.0.
0.3.1.0 [2020-01-29]
- Added “native” classes as exports for
Records
andVariants
(e.g.,ToNative
,FromNative
) - Added more example hs files.
0.3.0.0 [2019-05-28]
- Added
HasField
andAsConstructor
instances (from generic-lens) forRec
andVar
respectively. - Added record-overwrite function
.//
. - Added
Generic
instances for Rec and Var. - Added mapHas entailment connecting
Map f r .! l
tor .! l
. - Changed
Forall2
toBiForall
.- Added
BiConstraint
type class for use withBiForall
.
- Added
- Added
Ap
type family that functions asap
over rows using zipping.- Added
mapF
to map a function over a record with anAp
row.
- Added
- Added
toDynamicMap
andfromDynamicMap
as functions to convert betweenRec
s andHashMap Text Dynamic
s. - Added
toNativeExact
to convert aRec
to a native Haskell type without losing any fields. - Added
toNative
,fromNative
, andfromNativeExact
forVar
s. - Added
unSingleton
forVar
s.- Removed
unSingleton
fromData.Row
export list.
- Removed
- Tightened the type signatures of
focus
(for bothRec
andVar
) to improve type inference when usingfocus
in lens-like situations.
0.2.3.1 [2018-07-11]
- Fix a bug in the
Show
instance forRec
.
0.2.3.0 [2018-07-02]
- Update the
Show
instance forRec
to render valid code. - Add
toNative
andfromNative
functions for records to easily convert between Haskell records and row-types records. - Make type families in
Data.Row.Internal
polykinded (Thanks James Yu!)
0.2.1.0 [2018-03-20]
- Bug Fix: The type of
update
for bothRec
andVar
now enforce the newly inserted type is correct. - New: Add
restrict
andsplit
forVar
s.- Removed
restrict
fromData.Row
export list.
- Removed
- New: Added support for universally quantified rows:
mapForall
anduniqueMap
. - Added very simple test suite.
0.2.0.0 [2018-02-12]
- Initial Release