extensible
Extensible, efficient, optics-friendly data types and effects
https://github.com/fumieval/extensible
| Version on this page: | 0.9@rev:2 |
| LTS Haskell 23.28: | 0.9.2 |
| Stackage Nightly 2024-12-09: | 0.9.2 |
| Latest on Hackage: | 0.9.2 |
BSD-3-Clause licensed by Fumiaki Kinoshita
Maintained by Fumiaki Kinoshita
This version can be pinned in stack with:
extensible-0.9@sha256:3d6af367a516c732f333725bc9e05136ade119ee092a33e2e193caea22e1a0a5,3344Module documentation for 0.9
- Data
- Data.Extensible
- Data.Extensible.Bits
- Data.Extensible.Class
- Data.Extensible.Dictionary
- Data.Extensible.Field
- Data.Extensible.GetOpt
- Data.Extensible.Inclusion
- Data.Extensible.Internal
- Data.Extensible.Label
- Data.Extensible.Match
- Data.Extensible.Nullable
- Data.Extensible.Plain
- Data.Extensible.Product
- Data.Extensible.Record
- Data.Extensible.Struct
- Data.Extensible.Sum
- Data.Extensible.TH
- Data.Extensible.Tangle
- Data.Extensible.Wrapper
- Data.Extensible
Depends on 23 packages(full list with versions):

This package provides extensible poly-kinded records, variants and effects.
Several tutorials can be found at School of Haskell.
Bug reports and contributions are welcome!
Changes
0.9
- Removed
FieldName, the relic of the old ages(@=),@==,@!?andlassonow takeProxyinstead ofFieldName. Those who are usingmkFieldneed to replace the operands with proxies (OverloadedLabels is recommended).
- Supported aeson 1.x
- Introduced
IsLabelflag which toggles the presence of opticsOverloadedLabels. By disabling it, this package can now coexist with other users of theIsLabelclass, such asgeneric-lensandrelational-query.
0.8.3
Compis now a pattern synonym forCompose- Added missing
liftTypedimplementations - Supported aeson-2.0
0.8.1
- Added
DefaultOrderedandIncrementalinstances to:& - Added an
Incrementalinstance toField
0.8
- Removed
Associate,AssocKey,AssocValue,ValueIs,KeyIs,KeyValue,proxyAssocKey,proxyAssocValue,stringAssokKey,xlb,:*,:| - Reverted deprecation of
Data.Extensible.Tangle
0.7.1
- Removed
vectorandprettyprinterorphans - Deprecated
Data.Extensible.Tangle; use tangle parseJSONgives more informative failure messages on failure- Supported
barbies ^>= 2
0.7
- Moved
Data.Extensible.Effectinto newextensible-skeletonpackage - Instances for barbies and cassava are now optional
- Deprecated 訊
0.6.1
- Added
fromNullable - Added
xlb - Added a
HasFieldinstance forRecordOf - Removed
deriveIsRecord - Supported GHC 8.8
0.6
- Added a MonadCont instance for Eff
(:*)and(:|)are deprecated in favour of(:&)and(:*)where their type parameters are flipped- Flipped the type parameters of
BitProdandTangleT - Added
itemKey,hmapWithIndexWith,hfoldMapWith,hfoldMapWithIndexWith,hfoldrWithIndexWith,hfoldlWithIndexWith,hrepeatWith,htabulateWith, andhgenerateWith
0.5.1
- Split
Data.Extensible.HListandData.Extensible.Internalto themembershippackage AssocKey,AssocValue,ValueIs,KeyValueand their related combinators are deprecated. Use ones frommembershipIsRecordnow has a generic default implementation- Deprecated
deriveIsRecord
0.5
- GHC older than 8.4 is no longer supported
- Removed
Const' Data.Extensible.Plainis no longer exported fromData.Extensible- Added
wrapandunwraptoWrapper - Added
(=<:)
0.4.10.1
- Fixed build on GHC 8.6
0.4.10
- Added a
MonadResource,MonadThrow, andMonadCatchinstances forEff ProxyandKnownSymbolare now reexported fromData.Extensible
0.4.9
- Generalised the
MonadIOinstance forEffto(MonadIO m, Associate "IO" m xs) => MonadIO (Eff xs) - Added
And :: (k -> Constraint) -> (k -> Constraint) -> k -> Constraint - Added
SemigroupandMonoidinstances forConst' - Added
stringAssocKey :: (IsString a, KnownSymbol (AssocKey kv)) => proxy kv -> a - Added a
Wrapperinstance forEither e - Added instances of
PrettyandLift - Added
hmapWithIndexFor
0.4.8
- Changed the
FromJSONinstance forRecordto callparseJSON Nullfor missing fields - Added
FromJSONandToJSONinstances forNullable (Field h) :* xs
0.4.7.2
- Added cassava’s
ToNamedRecord,ToRecord,FromNamedRecordandFromRecordinstances - Added
KeyIsandValueIs - Added
FromJSONandToJSONinstances for(:*)
0.4.7.1
- Fixed weird CPP errors on macOS 10.13.2 (#18)
- Added
optFlag,optLastArg, andoptionOptArg
0.4.7
- Made various optimisations to improve the compilation time
- Added trivial instances for
FromBits - Generalised the API of
Data.Extensible.GetOpt
0.4.6
- New module
Data.Extensible.GetOpt - Added
fromBitProd - Added
Hashableinstances for:*,:|,BitProd,Membership, and various wrappers - Added an
Unboxinstance for:* - Added
hfoldlWithIndexandhfoldlWithIndexFor
0.4.5
- Added
nothingEff - Added
happend - Added
Arbitraryinstances for:*,:|, and wrappers - Added
Data.Extensible.Bits
0.4.4
- Added
contEffandrunContEff - Added
castEff - Added
evalStateEff - Added
SemigroupandMonoidinstances forMatch,Comp,Prod - Added
evalStateDef,execStateDef, andexecWriterDef - Added
mkFieldAs - Added a
Boundedinstance for:*
0.4.3
- Added
WrappedPointer - Added
NFDataandGenericinstances forComp - Added a
Semigroupinstance forh :* xsandMembership xs x - Added
Prod - Added
peelEff0 - Changed the
IsLabelinstance so that a function is always inferred as an optic Data.Extensible.Classnow exportscompareMembership- Renamed
runMembershiptoleadership
0.4.2
- Made
newFromstrict pieceAtfor(:*)is now strict- Added
(<!) - Added
peelEff1,peelAction0,execStateEff,execWriterEff - Added atomic operations for
Struct - Added constrained variants of folds
0.4.1
- Added
hforce - Added an
NFDatainstance for(:*)and:| - Added a rule to fuse a chain of product updates
- Added a
Monoidinstance forTangleT - Added
(@==) #foocan now be overloaded asFieldOptic "foo"
0.4
- Added
Data.Extensible.Struct - Changed the representation of
(:*)to useSmallArray - Removed
(<:*).hhead,htail,huncons,(*++*),htrans - New functions:
hfoldrWithIndex,hrepeat,hrepeatFor,haccumMap,haccum,hpartition,henumerate,hlength,hcount - Added various derived instances for
Field - Added
liftField,liftField2 - Added
Wrapperinstances forMaybeand[] - Added
>:as a synonym for:> Data.Extensible.Effect- Refined the API
- Added
Data.Extensible.Effect.Default
- Added
Data.Extensible.Tangle - Added
record - Type inference aids
0.3.7.1
pieceAtfor(:*)is now index-preserving- Removed
sector,sectorAt,picked
0.3.7
- Support GHC 8.0
- Added a
Monoidinstance forField - Added
Data.Extensible.Record - Added
EnumandBoundedinstances forProxy :| xs - Removed
Data.Extensible.Union
0.3.6
- Added
(@:>) - Added
(!-!!),nihility,squash
0.3.5
- Added
Data.Extensible.Effect - Added
decEffects
0.3.4
- Added
Data.Extensible.Wrapper - Added
itemAt,item,itemAssoc - Safe Haskell
- Generalized
Field
0.3.3
- Renamed
sectorAt,sector,sectorAssoctopieceAt,piece,pieceAssoc, respectively pickedis now subsumed bypiecemkFieldyields more generalized optics
- Renamed
UnionAttoEmbedAt - Removed
clause; Usepiece . _Match - Removed
record; Usepiece . _K0 - Added
htraverseWithIndex - Renamed
ordtomkMembership - Fixed the
Showinstance of:| - Added
Variant
0.3.2
- Added
Associateclass and combinators around it Data.Extensible.Recordnow lets values be independent from keysmkFieldrequires 1 argument
- Added
Data.Extensible.Union, partially takingelevator’s functionality - Removed old
Data.Extensible.UnionandData.Extensible.League - Removed
(<?!)
0.3.1
- Removed
Reifiable - Now
libraryyields desired dictionaries - Added
remember - Added
strikeandstrikeAt
0.3
- Renamed
generatetohtabulate - Renamed
generateAtohgenerate - Renamed
generateFortohtabulateFor - Renamed
generateForAtohgenerateFor - Renamed
htabulatetohmapWithIndex - Added
(<@=>) - Added
Comp - Fixed badly-specialized
htraverse - Added
hsequence,hdistribute,hcollect - Added
hindex
0.2.10
- Optimized
sector(~2x)
0.2.9
- Renamed
(<?~)to(<?!$) - Renamed
(<$?~)to(<?!~) - Refactored
Data.Extensible.Dictionary - Supported serialization/deserialization of products using
binary
0.2.8
- Improved performance considerably
0.2.7
- Added
accessing - Added
decFieldsanddecFieldsDeriving - Renamed
PositiontoMembership
0.2.6
- Right-associated
(++) - Added
htrans - Added
recordType - Made Eq, Ord, Show instances for Position more reasonable
0.2.5
- Added
(<:) - Re-exported
Data.Extensible.Record,Data.Extensible.Union,Data.Extensible.League - Brushed instances up
- Added
subset - Added
Data.Extensible.Internal.HListand combinators
0.2.4
- Corrected the definition of
Half - Added
coinclusion,wrench,retrenchalong withNullable - Added
htabulate
0.2.3
- Corrected the behavior of
GenerateandForall - Made type errors more readable
- Added
(*++*) - Fixed the accidental miscall of
getUnion
0.2.2
- Added
recordAt - Added
ord - Re-added
K1 - Toggled INLINE pragmas
0.2.1
- Added
hheadandhtail - Changed the definition of
Unionto use coyoneda style
0.2
- Split modules up
- Flipped
Position - Added several combinators