extensible
Extensible, efficient, optics-friendly data types and effects
https://github.com/fumieval/extensible
LTS Haskell 22.33: | 0.9@rev:2 |
Stackage Nightly 2024-09-07: | 0.9@rev:2 |
Latest on Hackage: | 0.9@rev: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,3344
Module 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(@=)
,@==
,@!?
andlasso
now takeProxy
instead ofFieldName
. Those who are usingmkField
need to replace the operands with proxies (OverloadedLabels is recommended).
- Supported aeson 1.x
- Introduced
IsLabel
flag which toggles the presence of opticsOverloadedLabels
. By disabling it, this package can now coexist with other users of theIsLabel
class, such asgeneric-lens
andrelational-query
.
0.8.3
Comp
is now a pattern synonym forCompose
- Added missing
liftTyped
implementations - Supported aeson-2.0
0.8.1
- Added
DefaultOrdered
andIncremental
instances to:&
- Added an
Incremental
instance toField
0.8
- Removed
Associate
,AssocKey
,AssocValue
,ValueIs
,KeyIs
,KeyValue
,proxyAssocKey
,proxyAssocValue
,stringAssokKey
,xlb
,:*
,:|
- Reverted deprecation of
Data.Extensible.Tangle
0.7.1
- Removed
vector
andprettyprinter
orphans - Deprecated
Data.Extensible.Tangle
; use tangle parseJSON
gives more informative failure messages on failure- Supported
barbies ^>= 2
0.7
- Moved
Data.Extensible.Effect
into newextensible-skeleton
package - Instances for barbies and cassava are now optional
- Deprecated 訊
0.6.1
- Added
fromNullable
- Added
xlb
- Added a
HasField
instance 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
BitProd
andTangleT
- Added
itemKey
,hmapWithIndexWith
,hfoldMapWith
,hfoldMapWithIndexWith
,hfoldrWithIndexWith
,hfoldlWithIndexWith
,hrepeatWith
,htabulateWith
, andhgenerateWith
0.5.1
- Split
Data.Extensible.HList
andData.Extensible.Internal
to themembership
package AssocKey
,AssocValue
,ValueIs
,KeyValue
and their related combinators are deprecated. Use ones frommembership
IsRecord
now has a generic default implementation- Deprecated
deriveIsRecord
0.5
- GHC older than 8.4 is no longer supported
- Removed
Const'
Data.Extensible.Plain
is no longer exported fromData.Extensible
- Added
wrap
andunwrap
toWrapper
- Added
(=<:)
0.4.10.1
- Fixed build on GHC 8.6
0.4.10
- Added a
MonadResource
,MonadThrow
, andMonadCatch
instances forEff
Proxy
andKnownSymbol
are now reexported fromData.Extensible
0.4.9
- Generalised the
MonadIO
instance forEff
to(MonadIO m, Associate "IO" m xs) => MonadIO (Eff xs)
- Added
And :: (k -> Constraint) -> (k -> Constraint) -> k -> Constraint
- Added
Semigroup
andMonoid
instances forConst'
- Added
stringAssocKey :: (IsString a, KnownSymbol (AssocKey kv)) => proxy kv -> a
- Added a
Wrapper
instance forEither e
- Added instances of
Pretty
andLift
- Added
hmapWithIndexFor
0.4.8
- Changed the
FromJSON
instance forRecord
to callparseJSON Null
for missing fields - Added
FromJSON
andToJSON
instances forNullable (Field h) :* xs
0.4.7.2
- Added cassava’s
ToNamedRecord
,ToRecord
,FromNamedRecord
andFromRecord
instances - Added
KeyIs
andValueIs
- Added
FromJSON
andToJSON
instances 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
Hashable
instances for:*
,:|
,BitProd
,Membership
, and various wrappers - Added an
Unbox
instance for:*
- Added
hfoldlWithIndex
andhfoldlWithIndexFor
0.4.5
- Added
nothingEff
- Added
happend
- Added
Arbitrary
instances for:*
,:|
, and wrappers - Added
Data.Extensible.Bits
0.4.4
- Added
contEff
andrunContEff
- Added
castEff
- Added
evalStateEff
- Added
Semigroup
andMonoid
instances forMatch
,Comp
,Prod
- Added
evalStateDef
,execStateDef
, andexecWriterDef
- Added
mkFieldAs
- Added a
Bounded
instance for:*
0.4.3
- Added
WrappedPointer
- Added
NFData
andGeneric
instances forComp
- Added a
Semigroup
instance forh :* xs
andMembership xs x
- Added
Prod
- Added
peelEff0
- Changed the
IsLabel
instance so that a function is always inferred as an optic Data.Extensible.Class
now exportscompareMembership
- Renamed
runMembership
toleadership
0.4.2
- Made
newFrom
strict pieceAt
for(:*)
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
NFData
instance for(:*)
and:|
- Added a rule to fuse a chain of product updates
- Added a
Monoid
instance forTangleT
- Added
(@==)
#foo
can 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
Wrapper
instances forMaybe
and[]
- 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
pieceAt
for(:*)
is now index-preserving- Removed
sector
,sectorAt
,picked
0.3.7
- Support GHC 8.0
- Added a
Monoid
instance forField
- Added
Data.Extensible.Record
- Added
Enum
andBounded
instances 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
,sectorAssoc
topieceAt
,piece
,pieceAssoc
, respectively picked
is now subsumed bypiece
mkField
yields more generalized optics
- Renamed
UnionAt
toEmbedAt
- Removed
clause
; Usepiece . _Match
- Removed
record
; Usepiece . _K0
- Added
htraverseWithIndex
- Renamed
ord
tomkMembership
- Fixed the
Show
instance of:|
- Added
Variant
0.3.2
- Added
Associate
class and combinators around it Data.Extensible.Record
now lets values be independent from keysmkField
requires 1 argument
- Added
Data.Extensible.Union
, partially takingelevator
’s functionality - Removed old
Data.Extensible.Union
andData.Extensible.League
- Removed
(<?!)
0.3.1
- Removed
Reifiable
- Now
library
yields desired dictionaries - Added
remember
- Added
strike
andstrikeAt
0.3
- Renamed
generate
tohtabulate
- Renamed
generateA
tohgenerate
- Renamed
generateFor
tohtabulateFor
- Renamed
generateForA
tohgenerateFor
- Renamed
htabulate
tohmapWithIndex
- 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
decFields
anddecFieldsDeriving
- Renamed
Position
toMembership
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.HList
and combinators
0.2.4
- Corrected the definition of
Half
- Added
coinclusion
,wrench
,retrench
along withNullable
- Added
htabulate
0.2.3
- Corrected the behavior of
Generate
andForall
- 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
hhead
andhtail
- Changed the definition of
Union
to use coyoneda style
0.2
- Split modules up
- Flipped
Position
- Added several combinators