@fncts/base 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_cjs/collection/Iterable/api/traverseConc.cjs +16 -21
- package/_cjs/collection/Iterable/api/traverseConc.cjs.map +1 -1
- package/_cjs/collection/compat/Record/instances.cjs +67 -16
- package/_cjs/collection/compat/Record/instances.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/api.cjs +9 -12
- package/_cjs/collection/immutable/Conc/api.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/definition.cjs +41 -43
- package/_cjs/collection/immutable/Conc/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/Dictionary/definition.cjs +2 -4
- package/_cjs/collection/immutable/Dictionary/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/HashMap/api.cjs +26 -29
- package/_cjs/collection/immutable/HashMap/api.cjs.map +1 -1
- package/_cjs/collection/immutable/HashMap/definition.cjs +15 -17
- package/_cjs/collection/immutable/HashMap/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableArray/api.cjs +136 -153
- package/_cjs/collection/immutable/ImmutableArray/api.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableArray/definition.cjs +10 -12
- package/_cjs/collection/immutable/ImmutableArray/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableArray/instances.cjs +11 -9
- package/_cjs/collection/immutable/ImmutableArray/instances.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs +21 -22
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs +3 -9
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs +8 -2
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs.map +1 -1
- package/_cjs/collection/immutable/RoseTree/definition.cjs +13 -15
- package/_cjs/collection/immutable/RoseTree/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/Vector/api.cjs +8 -12
- package/_cjs/collection/immutable/Vector/api.cjs.map +1 -1
- package/_cjs/collection/immutable/Vector/definition.cjs +11 -13
- package/_cjs/collection/immutable/Vector/definition.cjs.map +1 -1
- package/_cjs/collection/weak/IterableWeakMap.cjs +51 -2
- package/_cjs/collection/weak/IterableWeakMap.cjs.map +1 -1
- package/_cjs/collection/weak/IterableWeakSet.cjs +59 -7
- package/_cjs/collection/weak/IterableWeakSet.cjs.map +1 -1
- package/_cjs/control/Eval/api.cjs +9 -3
- package/_cjs/control/Eval/api.cjs.map +1 -1
- package/_cjs/control/Eval/definition.cjs +0 -7
- package/_cjs/control/Eval/definition.cjs.map +1 -1
- package/_cjs/control/Eval/instance.cjs +6 -0
- package/_cjs/control/Eval/instance.cjs.map +1 -1
- package/_cjs/control/Z/api.cjs +16 -14
- package/_cjs/control/Z/api.cjs.map +1 -1
- package/_cjs/control/Z/definition.cjs +9 -14
- package/_cjs/control/Z/definition.cjs.map +1 -1
- package/_cjs/control/Z/instances.cjs +6 -0
- package/_cjs/control/Z/instances.cjs.map +1 -1
- package/_cjs/control/Z/runtime.cjs +15 -13
- package/_cjs/control/Z/runtime.cjs.map +1 -1
- package/_cjs/data/Const/definition.cjs +0 -7
- package/_cjs/data/Const/definition.cjs.map +1 -1
- package/_cjs/data/Const/instances.cjs +7 -5
- package/_cjs/data/Const/instances.cjs.map +1 -1
- package/_cjs/data/Datum/api.cjs +479 -0
- package/_cjs/data/Datum/api.cjs.map +1 -0
- package/_cjs/data/Datum/definition.cjs +142 -0
- package/_cjs/data/Datum/definition.cjs.map +1 -0
- package/_cjs/data/Datum/instances.cjs +69 -0
- package/_cjs/data/Datum/instances.cjs.map +1 -0
- package/_cjs/data/DatumEither/api.cjs +365 -0
- package/_cjs/data/DatumEither/api.cjs.map +1 -0
- package/_cjs/data/DatumEither/definition.cjs +9 -0
- package/_cjs/data/DatumEither/definition.cjs.map +1 -0
- package/_cjs/data/DecodeError/definition.cjs +3 -3
- package/_cjs/data/DecodeError/definition.cjs.map +1 -1
- package/_cjs/data/Decoder/definition.cjs +3 -10
- package/_cjs/data/Decoder/definition.cjs.map +1 -1
- package/_cjs/data/Either/api.cjs +21 -5
- package/_cjs/data/Either/api.cjs.map +1 -1
- package/_cjs/data/Either/definition.cjs +3 -10
- package/_cjs/data/Either/definition.cjs.map +1 -1
- package/_cjs/data/Either/instances.cjs +25 -23
- package/_cjs/data/Either/instances.cjs.map +1 -1
- package/_cjs/data/EitherT/api.cjs +106 -0
- package/_cjs/data/EitherT/api.cjs.map +1 -0
- package/_cjs/data/EitherT/definition.cjs +9 -0
- package/_cjs/data/EitherT/definition.cjs.map +1 -0
- package/_cjs/data/Environment/api.cjs +15 -14
- package/_cjs/data/Environment/api.cjs.map +1 -1
- package/_cjs/data/Environment/definition.cjs.map +1 -1
- package/_cjs/data/Identity/api.cjs +3 -1
- package/_cjs/data/Identity/api.cjs.map +1 -1
- package/_cjs/data/Identity/definition.cjs +2 -4
- package/_cjs/data/Identity/definition.cjs.map +1 -1
- package/_cjs/data/Identity/instances.cjs +6 -0
- package/_cjs/data/Identity/instances.cjs.map +1 -1
- package/_cjs/data/Intervals.cjs +292 -0
- package/_cjs/data/Intervals.cjs.map +1 -0
- package/_cjs/data/Maybe/api.cjs +3 -1
- package/_cjs/data/Maybe/api.cjs.map +1 -1
- package/_cjs/data/Maybe/definition.cjs +11 -13
- package/_cjs/data/Maybe/definition.cjs.map +1 -1
- package/_cjs/data/Maybe/instances.cjs +13 -11
- package/_cjs/data/Maybe/instances.cjs.map +1 -1
- package/_cjs/data/Newtype.cjs +3 -5
- package/_cjs/data/Newtype.cjs.map +1 -1
- package/_cjs/data/Struct/definition.cjs +2 -4
- package/_cjs/data/Struct/definition.cjs.map +1 -1
- package/_cjs/data/Zipped.cjs +55 -0
- package/_cjs/data/Zipped.cjs.map +1 -0
- package/_cjs/data/function/api.cjs +10 -0
- package/_cjs/data/function/api.cjs.map +1 -1
- package/_cjs/data/object/instances.cjs +9 -1
- package/_cjs/data/object/instances.cjs.map +1 -1
- package/_cjs/optics/Optional/definition.cjs +4 -6
- package/_cjs/optics/Optional/definition.cjs.map +1 -1
- package/_cjs/optics/Traversal/api/compose.cjs +1 -1
- package/_cjs/optics/Traversal/api/compose.cjs.map +1 -1
- package/_cjs/optics/Traversal/api/fromTraversable.cjs +1 -1
- package/_cjs/optics/Traversal/api/fromTraversable.cjs.map +1 -1
- package/_cjs/optics/Traversal/definition.cjs +3 -3
- package/_cjs/optics/Traversal/definition.cjs.map +1 -1
- package/_cjs/typeclass/Alt.cjs +0 -7
- package/_cjs/typeclass/Alt.cjs.map +1 -1
- package/_cjs/typeclass/ApplicativeExcept.cjs +9 -35
- package/_cjs/typeclass/ApplicativeExcept.cjs.map +1 -1
- package/_cjs/typeclass/Apply.cjs +39 -66
- package/_cjs/typeclass/Apply.cjs.map +1 -1
- package/_cjs/typeclass/Chain.cjs +6 -28
- package/_cjs/typeclass/Chain.cjs.map +1 -1
- package/_cjs/typeclass/Fail.cjs +0 -10
- package/_cjs/typeclass/Fail.cjs.map +1 -1
- package/_cjs/typeclass/Filterable.cjs +0 -36
- package/_cjs/typeclass/Filterable.cjs.map +1 -1
- package/_cjs/typeclass/Foldable.cjs +4 -34
- package/_cjs/typeclass/Foldable.cjs.map +1 -1
- package/_cjs/typeclass/FoldableWithIndex.cjs +4 -34
- package/_cjs/typeclass/FoldableWithIndex.cjs.map +1 -1
- package/_cjs/typeclass/Functor.cjs +3 -18
- package/_cjs/typeclass/Functor.cjs.map +1 -1
- package/_cjs/typeclass/Guard/definition.cjs +3 -10
- package/_cjs/typeclass/Guard/definition.cjs.map +1 -1
- package/_cjs/typeclass/MonadExcept.cjs +2 -10
- package/_cjs/typeclass/MonadExcept.cjs.map +1 -1
- package/_cjs/typeclass/Nil.cjs +0 -10
- package/_cjs/typeclass/Nil.cjs.map +1 -1
- package/_cjs/typeclass/Pointed.cjs +0 -11
- package/_cjs/typeclass/Pointed.cjs.map +1 -1
- package/_cjs/typeclass/Semialign.cjs +18 -46
- package/_cjs/typeclass/Semialign.cjs.map +1 -1
- package/_cjs/typeclass/Semimonoidal.cjs +0 -11
- package/_cjs/typeclass/Semimonoidal.cjs.map +1 -1
- package/_cjs/typeclass/Showable/show.cjs +12 -12
- package/_cjs/typeclass/Showable/show.cjs.map +1 -1
- package/_cjs/typeclass/Traversable.cjs +7 -26
- package/_cjs/typeclass/Traversable.cjs.map +1 -1
- package/_cjs/typeclass/TraversableWithIndex.cjs +3 -7
- package/_cjs/typeclass/TraversableWithIndex.cjs.map +1 -1
- package/_cjs/typeclass/Witherable.cjs +3 -45
- package/_cjs/typeclass/Witherable.cjs.map +1 -1
- package/_cjs/typeclass/WitherableWithIndex.cjs +8 -44
- package/_cjs/typeclass/WitherableWithIndex.cjs.map +1 -1
- package/_mjs/collection/Iterable/api/traverseConc.mjs +16 -21
- package/_mjs/collection/Iterable/api/traverseConc.mjs.map +1 -1
- package/_mjs/collection/compat/Record/instances.mjs +62 -16
- package/_mjs/collection/compat/Record/instances.mjs.map +1 -1
- package/_mjs/collection/immutable/Conc/api.mjs +7 -11
- package/_mjs/collection/immutable/Conc/api.mjs.map +1 -1
- package/_mjs/collection/immutable/Conc/definition.mjs +41 -42
- package/_mjs/collection/immutable/Conc/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/Dictionary/definition.mjs +2 -3
- package/_mjs/collection/immutable/Dictionary/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/HashMap/api.mjs +18 -20
- package/_mjs/collection/immutable/HashMap/api.mjs.map +1 -1
- package/_mjs/collection/immutable/HashMap/definition.mjs +15 -16
- package/_mjs/collection/immutable/HashMap/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableArray/api.mjs +128 -147
- package/_mjs/collection/immutable/ImmutableArray/api.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableArray/definition.mjs +10 -11
- package/_mjs/collection/immutable/ImmutableArray/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableArray/instances.mjs +9 -8
- package/_mjs/collection/immutable/ImmutableArray/instances.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs +18 -19
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs +0 -2
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs +4 -3
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs.map +1 -1
- package/_mjs/collection/immutable/RoseTree/definition.mjs +13 -14
- package/_mjs/collection/immutable/RoseTree/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/Vector/api.mjs +8 -12
- package/_mjs/collection/immutable/Vector/api.mjs.map +1 -1
- package/_mjs/collection/immutable/Vector/definition.mjs +11 -12
- package/_mjs/collection/immutable/Vector/definition.mjs.map +1 -1
- package/_mjs/collection/weak/IterableWeakMap.mjs +51 -2
- package/_mjs/collection/weak/IterableWeakMap.mjs.map +1 -1
- package/_mjs/collection/weak/IterableWeakSet.mjs +59 -7
- package/_mjs/collection/weak/IterableWeakSet.mjs.map +1 -1
- package/_mjs/control/Eval/api.mjs +9 -4
- package/_mjs/control/Eval/api.mjs.map +1 -1
- package/_mjs/control/Eval/definition.mjs +0 -1
- package/_mjs/control/Eval/definition.mjs.map +1 -1
- package/_mjs/control/Eval/instance.mjs +1 -0
- package/_mjs/control/Eval/instance.mjs.map +1 -1
- package/_mjs/control/Z/api.mjs +16 -15
- package/_mjs/control/Z/api.mjs.map +1 -1
- package/_mjs/control/Z/definition.mjs +4 -5
- package/_mjs/control/Z/definition.mjs.map +1 -1
- package/_mjs/control/Z/instances.mjs +1 -0
- package/_mjs/control/Z/instances.mjs.map +1 -1
- package/_mjs/control/Z/runtime.mjs +14 -13
- package/_mjs/control/Z/runtime.mjs.map +1 -1
- package/_mjs/data/Const/definition.mjs +0 -3
- package/_mjs/data/Const/definition.mjs.map +1 -1
- package/_mjs/data/Const/instances.mjs +6 -5
- package/_mjs/data/Const/instances.mjs.map +1 -1
- package/_mjs/data/Datum/api.mjs +403 -0
- package/_mjs/data/Datum/api.mjs.map +1 -0
- package/_mjs/data/Datum/definition.mjs +112 -0
- package/_mjs/data/Datum/definition.mjs.map +1 -0
- package/_mjs/data/Datum/instances.mjs +52 -0
- package/_mjs/data/Datum/instances.mjs.map +1 -0
- package/_mjs/data/DatumEither/api.mjs +290 -0
- package/_mjs/data/DatumEither/api.mjs.map +1 -0
- package/_mjs/data/DatumEither/definition.mjs +2 -0
- package/_mjs/data/DatumEither/definition.mjs.map +1 -0
- package/_mjs/data/DecodeError/definition.mjs +3 -3
- package/_mjs/data/DecodeError/definition.mjs.map +1 -1
- package/_mjs/data/Decoder/definition.mjs +0 -2
- package/_mjs/data/Decoder/definition.mjs.map +1 -1
- package/_mjs/data/Either/api.mjs +16 -3
- package/_mjs/data/Either/api.mjs.map +1 -1
- package/_mjs/data/Either/definition.mjs +0 -2
- package/_mjs/data/Either/definition.mjs.map +1 -1
- package/_mjs/data/Either/instances.mjs +23 -22
- package/_mjs/data/Either/instances.mjs.map +1 -1
- package/_mjs/data/EitherT/api.mjs +73 -0
- package/_mjs/data/EitherT/api.mjs.map +1 -0
- package/_mjs/data/EitherT/definition.mjs +2 -0
- package/_mjs/data/EitherT/definition.mjs.map +1 -0
- package/_mjs/data/Environment/api.mjs +12 -13
- package/_mjs/data/Environment/api.mjs.map +1 -1
- package/_mjs/data/Environment/definition.mjs.map +1 -1
- package/_mjs/data/Identity/api.mjs +2 -1
- package/_mjs/data/Identity/api.mjs.map +1 -1
- package/_mjs/data/Identity/definition.mjs +2 -3
- package/_mjs/data/Identity/definition.mjs.map +1 -1
- package/_mjs/data/Identity/instances.mjs +1 -0
- package/_mjs/data/Identity/instances.mjs.map +1 -1
- package/_mjs/data/Intervals.mjs +257 -0
- package/_mjs/data/Intervals.mjs.map +1 -0
- package/_mjs/data/Maybe/api.mjs +2 -1
- package/_mjs/data/Maybe/api.mjs.map +1 -1
- package/_mjs/data/Maybe/definition.mjs +8 -10
- package/_mjs/data/Maybe/definition.mjs.map +1 -1
- package/_mjs/data/Maybe/instances.mjs +12 -11
- package/_mjs/data/Maybe/instances.mjs.map +1 -1
- package/_mjs/data/Newtype.mjs +3 -4
- package/_mjs/data/Newtype.mjs.map +1 -1
- package/_mjs/data/Struct/definition.mjs +2 -3
- package/_mjs/data/Struct/definition.mjs.map +1 -1
- package/_mjs/data/Zipped.mjs +37 -0
- package/_mjs/data/Zipped.mjs.map +1 -0
- package/_mjs/data/function/api.mjs +8 -0
- package/_mjs/data/function/api.mjs.map +1 -1
- package/_mjs/data/object/instances.mjs +7 -1
- package/_mjs/data/object/instances.mjs.map +1 -1
- package/_mjs/optics/Optional/definition.mjs +4 -5
- package/_mjs/optics/Optional/definition.mjs.map +1 -1
- package/_mjs/optics/Traversal/api/compose.mjs +1 -1
- package/_mjs/optics/Traversal/api/compose.mjs.map +1 -1
- package/_mjs/optics/Traversal/api/fromTraversable.mjs +1 -1
- package/_mjs/optics/Traversal/api/fromTraversable.mjs.map +1 -1
- package/_mjs/optics/Traversal/definition.mjs +3 -3
- package/_mjs/optics/Traversal/definition.mjs.map +1 -1
- package/_mjs/typeclass/Alt.mjs +0 -5
- package/_mjs/typeclass/Alt.mjs.map +1 -1
- package/_mjs/typeclass/ApplicativeExcept.mjs +7 -32
- package/_mjs/typeclass/ApplicativeExcept.mjs.map +1 -1
- package/_mjs/typeclass/Apply.mjs +35 -65
- package/_mjs/typeclass/Apply.mjs.map +1 -1
- package/_mjs/typeclass/Chain.mjs +4 -25
- package/_mjs/typeclass/Chain.mjs.map +1 -1
- package/_mjs/typeclass/Fail.mjs +1 -8
- package/_mjs/typeclass/Fail.mjs.map +1 -1
- package/_mjs/typeclass/Filterable.mjs +0 -28
- package/_mjs/typeclass/Filterable.mjs.map +1 -1
- package/_mjs/typeclass/Foldable.mjs +3 -30
- package/_mjs/typeclass/Foldable.mjs.map +1 -1
- package/_mjs/typeclass/FoldableWithIndex.mjs +3 -30
- package/_mjs/typeclass/FoldableWithIndex.mjs.map +1 -1
- package/_mjs/typeclass/Functor.mjs +3 -16
- package/_mjs/typeclass/Functor.mjs.map +1 -1
- package/_mjs/typeclass/Guard/definition.mjs +0 -2
- package/_mjs/typeclass/Guard/definition.mjs.map +1 -1
- package/_mjs/typeclass/MonadExcept.mjs +2 -9
- package/_mjs/typeclass/MonadExcept.mjs.map +1 -1
- package/_mjs/typeclass/Nil.mjs +1 -8
- package/_mjs/typeclass/Nil.mjs.map +1 -1
- package/_mjs/typeclass/Pointed.mjs +0 -9
- package/_mjs/typeclass/Pointed.mjs.map +1 -1
- package/_mjs/typeclass/Semialign.mjs +17 -45
- package/_mjs/typeclass/Semialign.mjs.map +1 -1
- package/_mjs/typeclass/Semimonoidal.mjs +0 -9
- package/_mjs/typeclass/Semimonoidal.mjs.map +1 -1
- package/_mjs/typeclass/Showable/show.mjs +12 -12
- package/_mjs/typeclass/Showable/show.mjs.map +1 -1
- package/_mjs/typeclass/Traversable.mjs +6 -25
- package/_mjs/typeclass/Traversable.mjs.map +1 -1
- package/_mjs/typeclass/TraversableWithIndex.mjs +2 -6
- package/_mjs/typeclass/TraversableWithIndex.mjs.map +1 -1
- package/_mjs/typeclass/Witherable.mjs +3 -40
- package/_mjs/typeclass/Witherable.mjs.map +1 -1
- package/_mjs/typeclass/WitherableWithIndex.mjs +6 -41
- package/_mjs/typeclass/WitherableWithIndex.mjs.map +1 -1
- package/_src/collection/Iterable/api/traverseConc.ts +24 -21
- package/_src/collection/compat/Record/instances.ts +44 -0
- package/_src/collection/immutable/Conc/api.ts +9 -11
- package/_src/collection/immutable/Conc/definition.ts +9 -5
- package/_src/collection/immutable/Dictionary/definition.ts +1 -1
- package/_src/collection/immutable/HashMap/api.ts +20 -17
- package/_src/collection/immutable/HashMap/definition.ts +10 -6
- package/_src/collection/immutable/ImmutableArray/api.ts +56 -113
- package/_src/collection/immutable/ImmutableArray/definition.ts +8 -5
- package/_src/collection/immutable/ImmutableArray/instances.ts +42 -42
- package/_src/collection/immutable/ImmutableNonEmptyArray/api.ts +13 -11
- package/_src/collection/immutable/ImmutableNonEmptyArray/definition.ts +8 -3
- package/_src/collection/immutable/ImmutableNonEmptyArray/instances.ts +24 -25
- package/_src/collection/immutable/RoseTree/definition.ts +7 -4
- package/_src/collection/immutable/Vector/api.ts +12 -16
- package/_src/collection/immutable/Vector/definition.ts +9 -9
- package/_src/collection/weak/IterableWeakMap.ts +50 -5
- package/_src/collection/weak/IterableWeakSet.ts +57 -9
- package/_src/control/Eval/api.ts +5 -2
- package/_src/control/Eval/definition.ts +7 -4
- package/_src/control/Eval/instance.ts +7 -7
- package/_src/control/Z/api.ts +16 -25
- package/_src/control/Z/definition.ts +32 -31
- package/_src/control/Z/instances.ts +3 -3
- package/_src/control/Z/runtime.ts +7 -7
- package/_src/data/Const/definition.ts +9 -17
- package/_src/data/Const/instances.ts +5 -5
- package/_src/data/Datum/api.ts +376 -0
- package/_src/data/Datum/definition.ts +102 -0
- package/_src/data/Datum/instances.ts +34 -0
- package/_src/data/DatumEither/api.ts +348 -0
- package/_src/data/DatumEither/definition.ts +20 -0
- package/_src/data/DecodeError/definition.ts +3 -3
- package/_src/data/Decoder/definition.ts +7 -4
- package/_src/data/Either/api.ts +12 -2
- package/_src/data/Either/definition.ts +9 -14
- package/_src/data/Either/instances.ts +6 -6
- package/_src/data/EitherT/api.ts +239 -0
- package/_src/data/EitherT/definition.ts +23 -0
- package/_src/data/Environment/api.ts +8 -6
- package/_src/data/Environment/definition.ts +2 -2
- package/_src/data/Identity/api.ts +2 -2
- package/_src/data/Identity/definition.ts +2 -2
- package/_src/data/Identity/instances.ts +7 -7
- package/_src/data/Intervals.ts +126 -0
- package/_src/data/Maybe/api.ts +2 -2
- package/_src/data/Maybe/definition.ts +7 -4
- package/_src/data/Maybe/instances.ts +10 -10
- package/_src/data/Newtype.ts +32 -11
- package/_src/data/Struct/definition.ts +1 -1
- package/_src/data/Tag/definition.ts +2 -2
- package/_src/data/Zipped.ts +52 -0
- package/_src/data/function/api.ts +8 -0
- package/_src/data/object/instances.ts +11 -1
- package/_src/optics/Optional/definition.ts +2 -2
- package/_src/optics/Traversal/api/compose.ts +1 -1
- package/_src/optics/Traversal/api/fromTraversable.ts +11 -11
- package/_src/optics/Traversal/definition.ts +13 -12
- package/_src/typeclass/Align.ts +1 -1
- package/_src/typeclass/Alt.ts +24 -54
- package/_src/typeclass/Alternative.ts +1 -1
- package/_src/typeclass/Applicative.ts +6 -1
- package/_src/typeclass/ApplicativeExcept.ts +55 -81
- package/_src/typeclass/Apply.ts +224 -253
- package/_src/typeclass/Chain.ts +71 -98
- package/_src/typeclass/Fail.ts +10 -28
- package/_src/typeclass/Filterable.ts +13 -67
- package/_src/typeclass/FilterableWithIndex.ts +13 -13
- package/_src/typeclass/Foldable.ts +16 -35
- package/_src/typeclass/FoldableWithIndex.ts +14 -37
- package/_src/typeclass/Functor.ts +11 -21
- package/_src/typeclass/FunctorWithIndex.ts +4 -4
- package/_src/typeclass/Guard/definition.ts +1 -3
- package/_src/typeclass/Monad.ts +1 -1
- package/_src/typeclass/MonadExcept.ts +11 -7
- package/_src/typeclass/Nil.ts +10 -27
- package/_src/typeclass/Pointed.ts +11 -30
- package/_src/typeclass/Semialign.ts +285 -253
- package/_src/typeclass/Semimonoidal.ts +23 -54
- package/_src/typeclass/Showable/show.ts +8 -10
- package/_src/typeclass/Traversable.ts +45 -63
- package/_src/typeclass/TraversableWithIndex.ts +37 -34
- package/_src/typeclass/Witherable.ts +28 -115
- package/_src/typeclass/WitherableWithIndex.ts +82 -115
- package/_src/types/extractions.ts +1 -1
- package/collection/Iterable/api/traverseConc.d.ts +4 -6
- package/collection/compat/Record/instances.d.ts +12 -0
- package/collection/immutable/Conc/api.d.ts +4 -6
- package/collection/immutable/Conc/definition.d.ts +9 -6
- package/collection/immutable/Dictionary/definition.d.ts +1 -1
- package/collection/immutable/HashMap/api.d.ts +13 -13
- package/collection/immutable/HashMap/definition.d.ts +10 -7
- package/collection/immutable/ImmutableArray/api.d.ts +16 -18
- package/collection/immutable/ImmutableArray/definition.d.ts +8 -6
- package/collection/immutable/ImmutableArray/instances.d.ts +17 -17
- package/collection/immutable/ImmutableNonEmptyArray/api.d.ts +6 -5
- package/collection/immutable/ImmutableNonEmptyArray/definition.d.ts +7 -3
- package/collection/immutable/ImmutableNonEmptyArray/instances.d.ts +10 -10
- package/collection/immutable/RoseTree/definition.d.ts +7 -5
- package/collection/immutable/Vector/api.d.ts +4 -4
- package/collection/immutable/Vector/definition.d.ts +8 -9
- package/collection/weak/IterableWeakMap.d.ts +9 -3
- package/collection/weak/IterableWeakSet.d.ts +10 -4
- package/control/Eval/api.d.ts +6 -1
- package/control/Eval/definition.d.ts +6 -4
- package/control/Eval/instance.d.ts +3 -3
- package/control/Z/api.d.ts +8 -6
- package/control/Z/definition.d.ts +38 -32
- package/control/Z/instances.d.ts +2 -2
- package/control/Z/runtime.d.ts +5 -4
- package/data/Const/definition.d.ts +8 -16
- package/data/Const/instances.d.ts +4 -3
- package/data/Datum/api.d.ts +188 -0
- package/data/Datum/definition.d.ts +75 -0
- package/data/Datum/instances.d.ts +32 -0
- package/data/DatumEither/api.d.ts +169 -0
- package/data/DatumEither/definition.d.ts +21 -0
- package/data/Decoder/definition.d.ts +6 -4
- package/data/Either/api.d.ts +10 -0
- package/data/Either/definition.d.ts +8 -14
- package/data/Either/instances.d.ts +4 -3
- package/data/EitherT/api.d.ts +60 -0
- package/data/EitherT/definition.d.ts +12 -0
- package/data/Environment/api.d.ts +7 -5
- package/data/Environment/definition.d.ts +3 -3
- package/data/Identity/api.d.ts +2 -1
- package/data/Identity/definition.d.ts +2 -2
- package/data/Identity/instances.d.ts +3 -3
- package/data/Intervals.d.ts +53 -0
- package/data/Maybe/api.d.ts +2 -1
- package/data/Maybe/definition.d.ts +7 -4
- package/data/Maybe/instances.d.ts +6 -6
- package/data/Newtype.d.ts +9 -8
- package/data/Struct/definition.d.ts +1 -1
- package/data/Tag/definition.d.ts +2 -2
- package/data/Zipped.d.ts +24 -0
- package/data/function/api.d.ts +6 -0
- package/data/object/instances.d.ts +6 -1
- package/optics/Traversal/api/fromTraversable.d.ts +1 -1
- package/optics/Traversal/definition.d.ts +2 -4
- package/package.json +2 -2
- package/typeclass/Align.d.ts +1 -1
- package/typeclass/Alt.d.ts +2 -4
- package/typeclass/Alternative.d.ts +1 -1
- package/typeclass/Applicative.d.ts +2 -1
- package/typeclass/ApplicativeExcept.d.ts +5 -13
- package/typeclass/Apply.d.ts +20 -32
- package/typeclass/Chain.d.ts +5 -13
- package/typeclass/Fail.d.ts +2 -7
- package/typeclass/Filterable.d.ts +7 -31
- package/typeclass/FilterableWithIndex.d.ts +7 -7
- package/typeclass/Foldable.d.ts +6 -19
- package/typeclass/FoldableWithIndex.d.ts +6 -19
- package/typeclass/Functor.d.ts +4 -11
- package/typeclass/FunctorWithIndex.d.ts +2 -2
- package/typeclass/Guard/definition.d.ts +1 -4
- package/typeclass/Monad.d.ts +1 -1
- package/typeclass/MonadExcept.d.ts +3 -4
- package/typeclass/Nil.d.ts +2 -7
- package/typeclass/Pointed.d.ts +2 -7
- package/typeclass/Semialign.d.ts +26 -32
- package/typeclass/Semimonoidal.d.ts +3 -8
- package/typeclass/Traversable.d.ts +21 -12
- package/typeclass/TraversableWithIndex.d.ts +19 -6
- package/typeclass/Witherable.d.ts +5 -19
- package/typeclass/WitherableWithIndex.d.ts +33 -19
- package/types/extractions.d.ts +1 -1
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import type * as P from "../../typeclass.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ConstF } from "@fncts/base/data/Const/definition";
|
|
3
3
|
|
|
4
4
|
import { Const } from "@fncts/base/data/Const/definition";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @tsplus static fncts.ConstOps getApply
|
|
8
8
|
*/
|
|
9
|
-
export function getApply<E>(S: P.Semigroup<E>)
|
|
10
|
-
return {
|
|
9
|
+
export function getApply<E>(S: P.Semigroup<E>) {
|
|
10
|
+
return HKT.instance<P.Apply<ConstF, HKT.Fix<"E", E>>>({
|
|
11
11
|
map: (fa, f) => fa.map(f),
|
|
12
12
|
zip: (self, that) => Const(S.combine(self.getConst, that.getConst)),
|
|
13
13
|
zipWith: (self, that, _f) => Const(S.combine(self.getConst, that.getConst)),
|
|
14
|
-
};
|
|
14
|
+
});
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* @tsplus static fncts.ConstOps getApplicative
|
|
19
19
|
*/
|
|
20
|
-
export function getApplicative<E>(M: P.Monoid<E>): P.Applicative<
|
|
20
|
+
export function getApplicative<E>(M: P.Monoid<E>): P.Applicative<ConstF, HKT.Fix<"E", E>> {
|
|
21
21
|
return {
|
|
22
22
|
...getApply(M),
|
|
23
23
|
pure: <A>() => Const<E, A>(M.nat),
|
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
import type { DatumF } from "@fncts/base/data/Datum/definition";
|
|
2
|
+
import type * as P from "@fncts/base/typeclass";
|
|
3
|
+
import type { Eq } from "@fncts/base/typeclass/Eq";
|
|
4
|
+
|
|
5
|
+
import { DatumTag, Initial, Pending, Refresh, Replete } from "@fncts/base/data/Datum/definition";
|
|
6
|
+
import { Zipped } from "@fncts/base/data/Zipped";
|
|
7
|
+
|
|
8
|
+
import { TheseTag } from "../These.js";
|
|
9
|
+
|
|
10
|
+
const _Initial = new Initial();
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @tsplus static fncts.DatumOps initial
|
|
14
|
+
* @tsplus static fncts.Datum.InitialOps __call
|
|
15
|
+
*/
|
|
16
|
+
export function initial<A = never>(): Datum<A> {
|
|
17
|
+
return _Initial;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const _Pending = new Pending();
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @tsplus static fncts.DatumOps pending
|
|
24
|
+
* @tsplus static fncts.Datum.PendingOps __call
|
|
25
|
+
*/
|
|
26
|
+
export function pending<A = never>(): Datum<A> {
|
|
27
|
+
return _Pending;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @tsplus static fncts.DatumOps refresh
|
|
32
|
+
* @tsplus static fncts.Datum.RefreshOps __call
|
|
33
|
+
*/
|
|
34
|
+
export function refresh<A>(value: A): Datum<A> {
|
|
35
|
+
return new Refresh(value);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @tsplus static fncts.DatumOps replete
|
|
40
|
+
* @tsplus static fncts.Datum.RepleteOps __call
|
|
41
|
+
*/
|
|
42
|
+
export function replete<A>(value: A): Datum<A> {
|
|
43
|
+
return new Replete(value);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @tsplus getter fncts.Datum value
|
|
48
|
+
*/
|
|
49
|
+
export function left<E, A>(self: Datum<A>): A | undefined {
|
|
50
|
+
return self.isNonEmpty() ? self.value : undefined;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @tsplus fluent fncts.Datum isInitial
|
|
55
|
+
*/
|
|
56
|
+
export function isInitial<A>(self: Datum<A>): self is Initial {
|
|
57
|
+
return self._tag === DatumTag.Initial;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @tsplus fluent fncts.Datum isPending
|
|
62
|
+
*/
|
|
63
|
+
export function isPending<A>(self: Datum<A>): self is Pending {
|
|
64
|
+
return self._tag === DatumTag.Pending;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @tsplus fluent fncts.Datum isRefresh
|
|
69
|
+
*/
|
|
70
|
+
export function isRefresh<A>(self: Datum<A>): self is Refresh<A> {
|
|
71
|
+
return self._tag === DatumTag.Refresh;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @tsplus fluent fncts.Datum isReplete
|
|
76
|
+
*/
|
|
77
|
+
export function isReplete<A>(self: Datum<A>): self is Replete<A> {
|
|
78
|
+
return self._tag === DatumTag.Replete;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @tsplus fluent fncts.Datum isEmpty
|
|
83
|
+
*/
|
|
84
|
+
export function isEmpty<A>(self: Datum<A>): self is Initial | Pending {
|
|
85
|
+
return self.isInitial() || self.isPending();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @tsplus fluent fncts.Datum isNonEmpty
|
|
90
|
+
*/
|
|
91
|
+
export function isNonEmpty<A>(self: Datum<A>): self is Refresh<A> | Replete<A> {
|
|
92
|
+
return self.isRefresh() || self.isReplete();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @tsplus fluent fncts.Datum isLoading
|
|
97
|
+
*/
|
|
98
|
+
export function isLoading<A>(self: Datum<A>): self is Pending | Refresh<A> {
|
|
99
|
+
return self.isPending() || self.isRefresh();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @tsplus fluent fncts.Datum elem
|
|
104
|
+
*/
|
|
105
|
+
export function elem<A>(self: Datum<A>, a: A, /** @tsplus auto */ E: Eq<A>): boolean {
|
|
106
|
+
return self.match({
|
|
107
|
+
Initial: () => false,
|
|
108
|
+
Pending: () => false,
|
|
109
|
+
Refresh: (value) => E.equals(a, value),
|
|
110
|
+
Replete: (value) => E.equals(a, value),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @tsplus fluent fncts.Datum exists
|
|
116
|
+
*/
|
|
117
|
+
export function exists<A, B extends A>(self: Datum<A>, p: Refinement<A, B>): self is Datum<B>;
|
|
118
|
+
export function exists<A>(self: Datum<A>, p: Predicate<A>): boolean;
|
|
119
|
+
export function exists<A>(self: Datum<A>, p: Predicate<A>): boolean {
|
|
120
|
+
return self.match({
|
|
121
|
+
Initial: () => false,
|
|
122
|
+
Pending: () => false,
|
|
123
|
+
Refresh: p,
|
|
124
|
+
Replete: p,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @tsplus fluent fncts.Datum extend
|
|
130
|
+
*/
|
|
131
|
+
export function extend<A, B>(self: Datum<A>, f: (wa: Datum<A>) => B): Datum<B> {
|
|
132
|
+
return Replete(f(self));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @tsplus fluent fncts.Datum filter
|
|
137
|
+
*/
|
|
138
|
+
export function filter<A, B extends A>(self: Datum<A>, p: Refinement<A, B>): Datum<B>;
|
|
139
|
+
export function filter<A>(self: Datum<A>, p: Predicate<A>): Datum<A>;
|
|
140
|
+
export function filter<A>(self: Datum<A>, p: Predicate<A>): Datum<A> {
|
|
141
|
+
return self.match({
|
|
142
|
+
Initial: () => self,
|
|
143
|
+
Pending: () => self,
|
|
144
|
+
Refresh: (a) => (p(a) ? self : Initial()),
|
|
145
|
+
Replete: (a) => (p(a) ? self : Initial()),
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @tsplus fluent fncts.Datum filterMap
|
|
151
|
+
*/
|
|
152
|
+
export function filterMap<A, B>(self: Datum<A>, f: (a: A) => Maybe<B>): Datum<B> {
|
|
153
|
+
return self.match({
|
|
154
|
+
Initial: () => unsafeCoerce(self),
|
|
155
|
+
Pending: () => unsafeCoerce(self),
|
|
156
|
+
Refresh: (value) =>
|
|
157
|
+
f(value).match(
|
|
158
|
+
() => Initial(),
|
|
159
|
+
(b) => Refresh(b),
|
|
160
|
+
),
|
|
161
|
+
Replete: (value) =>
|
|
162
|
+
f(value).match(
|
|
163
|
+
() => Initial(),
|
|
164
|
+
(b) => Replete(b),
|
|
165
|
+
),
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* @tsplus fluent fncts.Datum flatMap
|
|
171
|
+
*/
|
|
172
|
+
export function flatMap<A, B>(self: Datum<A>, f: (a: A) => Datum<B>): Datum<B> {
|
|
173
|
+
if (self.isEmpty()) {
|
|
174
|
+
return self;
|
|
175
|
+
}
|
|
176
|
+
const that = f(self.value);
|
|
177
|
+
|
|
178
|
+
if (that.isEmpty()) {
|
|
179
|
+
return that;
|
|
180
|
+
}
|
|
181
|
+
return self.isRefresh() || that.isRefresh() ? Refresh(that.value!) : Replete(that.value!);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* @tsplus fluent fncts.Datum foldLeft
|
|
186
|
+
*/
|
|
187
|
+
export function foldLeft<A, B>(self: Datum<A>, b: B, f: (b: B, a: A) => B): B {
|
|
188
|
+
return self.match({
|
|
189
|
+
Initial: () => b,
|
|
190
|
+
Pending: () => b,
|
|
191
|
+
Refresh: (a) => f(b, a),
|
|
192
|
+
Replete: (a) => f(b, a),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* @tsplus fluent fncts.Datum foldMap
|
|
198
|
+
*/
|
|
199
|
+
export function foldMap<A, M>(self: Datum<A>, f: (a: A) => M, /** @tsplus auto */ M: P.Monoid<M>): M {
|
|
200
|
+
return self.match({
|
|
201
|
+
Initial: () => M.nat,
|
|
202
|
+
Pending: () => M.nat,
|
|
203
|
+
Refresh: f,
|
|
204
|
+
Replete: f,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* @tsplus fluent fncts.Datum foldRight
|
|
210
|
+
*/
|
|
211
|
+
export function foldRight<A, B>(self: Datum<A>, b: B, f: (a: A, b: B) => B): B {
|
|
212
|
+
return self.match({
|
|
213
|
+
Initial: () => b,
|
|
214
|
+
Pending: () => b,
|
|
215
|
+
Refresh: (a) => f(a, b),
|
|
216
|
+
Replete: (a) => f(a, b),
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* @tsplus fluent fncts.Datum getOrElse
|
|
222
|
+
*/
|
|
223
|
+
export function getOrElse<A, B>(self: Datum<A>, b: Lazy<B>): A | B {
|
|
224
|
+
return self.match({
|
|
225
|
+
Initial: b,
|
|
226
|
+
Pending: b,
|
|
227
|
+
Refresh: Function.identity,
|
|
228
|
+
Replete: Function.identity,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* @tsplus fluent fncts.Datum match
|
|
234
|
+
*/
|
|
235
|
+
export function match<A, B, C, D, E>(
|
|
236
|
+
self: Datum<A>,
|
|
237
|
+
cases: {
|
|
238
|
+
Initial: () => B;
|
|
239
|
+
Pending: () => C;
|
|
240
|
+
Refresh: (a: A) => D;
|
|
241
|
+
Replete: (a: A) => E;
|
|
242
|
+
},
|
|
243
|
+
): B | C | D | E {
|
|
244
|
+
switch (self._tag) {
|
|
245
|
+
case DatumTag.Initial:
|
|
246
|
+
return cases.Initial();
|
|
247
|
+
case DatumTag.Pending:
|
|
248
|
+
return cases.Pending();
|
|
249
|
+
case DatumTag.Refresh:
|
|
250
|
+
return cases.Refresh(self.value);
|
|
251
|
+
case DatumTag.Replete:
|
|
252
|
+
return cases.Replete(self.value);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* @tsplus fluent fncts.Datum match2
|
|
258
|
+
*/
|
|
259
|
+
export function match2<A, B, C>(
|
|
260
|
+
self: Datum<A>,
|
|
261
|
+
onEmpty: (isLoading: boolean) => B,
|
|
262
|
+
onValue: (a: A, isLoading: boolean) => C,
|
|
263
|
+
): B | C {
|
|
264
|
+
switch (self._tag) {
|
|
265
|
+
case DatumTag.Initial:
|
|
266
|
+
return onEmpty(false);
|
|
267
|
+
case DatumTag.Pending:
|
|
268
|
+
return onEmpty(true);
|
|
269
|
+
case DatumTag.Refresh:
|
|
270
|
+
return onValue(self.value, true);
|
|
271
|
+
case DatumTag.Replete:
|
|
272
|
+
return onValue(self.value, false);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* @tsplus fluent fncts.Datum map
|
|
278
|
+
*/
|
|
279
|
+
export function map<A, B>(self: Datum<A>, f: (a: A) => B): Datum<B> {
|
|
280
|
+
switch (self._tag) {
|
|
281
|
+
case DatumTag.Initial:
|
|
282
|
+
case DatumTag.Pending:
|
|
283
|
+
return self;
|
|
284
|
+
case DatumTag.Refresh:
|
|
285
|
+
return Refresh(f(self.value));
|
|
286
|
+
case DatumTag.Replete:
|
|
287
|
+
return Replete(f(self.value));
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* @tsplus fluent fncts.Datum orElse
|
|
293
|
+
*/
|
|
294
|
+
export function orElse<A, B>(self: Datum<A>, that: Lazy<Datum<B>>): Datum<A | B> {
|
|
295
|
+
return self.match({
|
|
296
|
+
Initial: that,
|
|
297
|
+
Pending: that,
|
|
298
|
+
Refresh: () => self,
|
|
299
|
+
Replete: () => self,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* @tsplus fluent fncts.Datum partition
|
|
305
|
+
*/
|
|
306
|
+
export function partition<A, B extends A>(self: Datum<A>, p: Refinement<A, B>): [Datum<A>, Datum<B>];
|
|
307
|
+
export function partition<A>(self: Datum<A>, p: Predicate<A>): [Datum<A>, Datum<A>];
|
|
308
|
+
export function partition<A>(self: Datum<A>, p: Predicate<A>): [Datum<A>, Datum<A>] {
|
|
309
|
+
return [self.filter(p.invert), self.filter(p)];
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* @tsplus fluent fncts.Datum partitionMap
|
|
314
|
+
*/
|
|
315
|
+
export function partitionMap<A, B, C>(self: Datum<A>, f: (a: A) => Either<B, C>): [Datum<B>, Datum<C>] {
|
|
316
|
+
return self.match({
|
|
317
|
+
Initial: () => [Initial(), Initial()],
|
|
318
|
+
Pending: () => [Pending(), Pending()],
|
|
319
|
+
Refresh: (a) =>
|
|
320
|
+
f(a).match(
|
|
321
|
+
(b) => [Refresh(b), Initial()],
|
|
322
|
+
(c) => [Initial(), Refresh(c)],
|
|
323
|
+
),
|
|
324
|
+
Replete: (a) =>
|
|
325
|
+
f(a).match(
|
|
326
|
+
(b) => [Replete(b), Initial()],
|
|
327
|
+
(c) => [Initial(), Replete(c)],
|
|
328
|
+
),
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* @tsplus getter fncts.Datum toPending
|
|
334
|
+
*/
|
|
335
|
+
export function toPending<A>(self: Datum<A>): Datum<A> {
|
|
336
|
+
return self.isEmpty() ? self : Refresh(self.value);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* @tsplus getter fncts.Datum toReplete
|
|
341
|
+
*/
|
|
342
|
+
export function toReplete<A>(self: Datum<A>): Datum<A> {
|
|
343
|
+
return self.isEmpty() ? self : Replete(self.value);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* @tsplus fluent fncts.Datum traverse
|
|
348
|
+
*/
|
|
349
|
+
export const traverse: P.Traversable<DatumF>["traverse"] = (self) => (A) => (f) =>
|
|
350
|
+
self.match({
|
|
351
|
+
Initial: () => A.pure(Initial()),
|
|
352
|
+
Pending: () => A.pure(Pending()),
|
|
353
|
+
Refresh: (a) => A.map(f(a), (b) => Refresh(b)),
|
|
354
|
+
Replete: (a) => A.map(f(a), (b) => Replete(b)),
|
|
355
|
+
});
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* @tsplus fluent fncts.Datum zip
|
|
359
|
+
*/
|
|
360
|
+
export function zip<A, B>(self: Datum<A>, that: Datum<B>): Datum<Zipped.Make<A, B>> {
|
|
361
|
+
return self.zipWith(that, (a, b) => Zipped(a, b));
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* @tsplus fluent fncts.Datum zipWith
|
|
366
|
+
*/
|
|
367
|
+
export function zipWith<A, B, C>(self: Datum<A>, that: Datum<B>, f: (a: A, b: B) => C): Datum<C> {
|
|
368
|
+
if (self.isEmpty()) {
|
|
369
|
+
return self;
|
|
370
|
+
}
|
|
371
|
+
if (that.isEmpty()) {
|
|
372
|
+
return that;
|
|
373
|
+
}
|
|
374
|
+
const c = f(self.value, that.value);
|
|
375
|
+
return self.isRefresh() || that.isRefresh() ? Refresh(c) : Replete(c);
|
|
376
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
export const enum DatumTag {
|
|
2
|
+
Initial = "Initial",
|
|
3
|
+
Pending = "Pending",
|
|
4
|
+
Refresh = "Refresh",
|
|
5
|
+
Replete = "Replete",
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const DatumTypeId = Symbol.for("fncts.Datum");
|
|
9
|
+
export type DatumTypeId = typeof DatumTypeId;
|
|
10
|
+
|
|
11
|
+
export interface DatumF extends HKT {
|
|
12
|
+
type: Datum<this["A"]>;
|
|
13
|
+
variance: {
|
|
14
|
+
A: "+";
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @tsplus type fncts.Datum
|
|
20
|
+
*/
|
|
21
|
+
export type Datum<A> = Initial | Pending | Refresh<A> | Replete<A>;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @tsplus type fncts.DatumOps
|
|
25
|
+
*/
|
|
26
|
+
export interface DatumOps {}
|
|
27
|
+
|
|
28
|
+
export const Datum: DatumOps = {};
|
|
29
|
+
|
|
30
|
+
const datumHash = Hashable.string("fncts.Datum");
|
|
31
|
+
|
|
32
|
+
const initialHash = Hashable.combine(datumHash, Hashable.string(DatumTag.Initial));
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @tsplus type fncts.Datum.Initial
|
|
36
|
+
* @tsplus companion fncts.Datum.InitialOps
|
|
37
|
+
*/
|
|
38
|
+
export class Initial implements Hashable, Equatable {
|
|
39
|
+
readonly _tag = DatumTag.Initial;
|
|
40
|
+
get [Symbol.hash](): number {
|
|
41
|
+
return initialHash;
|
|
42
|
+
}
|
|
43
|
+
[Symbol.equals](that: unknown): boolean {
|
|
44
|
+
return isDatum(that) && that._tag === this._tag;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const pendingHash = Hashable.combine(datumHash, Hashable.string(DatumTag.Pending));
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @tsplus type fncts.Datum.Pending
|
|
52
|
+
* @tsplus companion fncts.Datum.PendingOps
|
|
53
|
+
*/
|
|
54
|
+
export class Pending implements Hashable, Equatable {
|
|
55
|
+
readonly _typeId: DatumTypeId = DatumTypeId;
|
|
56
|
+
readonly _tag = DatumTag.Pending;
|
|
57
|
+
get [Symbol.hash](): number {
|
|
58
|
+
return pendingHash;
|
|
59
|
+
}
|
|
60
|
+
[Symbol.equals](that: unknown): boolean {
|
|
61
|
+
return isDatum(that) && that._tag === this._tag;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @tsplus type fncts.Datum.Refresh
|
|
67
|
+
* @tsplus companion fncts.Datum.RefreshOps
|
|
68
|
+
*/
|
|
69
|
+
export class Refresh<A> implements Hashable, Equatable {
|
|
70
|
+
readonly _typeId: DatumTypeId = DatumTypeId;
|
|
71
|
+
readonly _tag = DatumTag.Refresh;
|
|
72
|
+
constructor(readonly value: A) {}
|
|
73
|
+
get [Symbol.hash](): number {
|
|
74
|
+
return Hashable.combine(Hashable.combine(datumHash, Hashable.string(this._tag)), Hashable.unknown(this.value));
|
|
75
|
+
}
|
|
76
|
+
[Symbol.equals](that: unknown): boolean {
|
|
77
|
+
return isDatum(that) && this._tag === that._tag && Equatable.strictEquals(this.value, that.value);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @tsplus type fncts.Datum.Replete
|
|
83
|
+
* @tsplus companion fncts.Datum.RepleteOps
|
|
84
|
+
*/
|
|
85
|
+
export class Replete<A> implements Hashable, Equatable {
|
|
86
|
+
readonly _typeId: DatumTypeId = DatumTypeId;
|
|
87
|
+
readonly _tag = DatumTag.Replete;
|
|
88
|
+
constructor(readonly value: A) {}
|
|
89
|
+
get [Symbol.hash](): number {
|
|
90
|
+
return Hashable.combine(Hashable.combine(datumHash, Hashable.string(this._tag)), Hashable.unknown(this.value));
|
|
91
|
+
}
|
|
92
|
+
[Symbol.equals](that: unknown): boolean {
|
|
93
|
+
return isDatum(that) && this._tag === that._tag && Equatable.strictEquals(this.value, that.value);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @tsplus static fncts.DatumOps is
|
|
99
|
+
*/
|
|
100
|
+
export function isDatum(u: unknown): u is Datum<unknown> {
|
|
101
|
+
return hasTypeId(u, DatumTypeId);
|
|
102
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { DatumF } from "./definition.js";
|
|
2
|
+
import type * as P from "@fncts/base/typeclass";
|
|
3
|
+
|
|
4
|
+
import { flatMap, map, replete, zip, zipWith } from "@fncts/base/data/Datum/api";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @tsplus static fncts.DatumOps Functor
|
|
8
|
+
* @tsplus implicit
|
|
9
|
+
*/
|
|
10
|
+
export const Functor = HKT.instance<P.Functor<DatumF>>({ map });
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @tsplus static fncts.DatumOps Semimonoidal
|
|
14
|
+
* @tsplus implicit
|
|
15
|
+
*/
|
|
16
|
+
export const Semimonoidal = HKT.instance<P.Semimonoidal<DatumF>>({ zip });
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @tsplus static fncts.DatumOps Apply
|
|
20
|
+
* @tsplus implicit
|
|
21
|
+
*/
|
|
22
|
+
export const Apply = HKT.instance<P.Apply<DatumF>>({ map, zip, zipWith });
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @tsplus static fncts.DatumOps Applicative
|
|
26
|
+
* @tsplus implicit
|
|
27
|
+
*/
|
|
28
|
+
export const Applicative = HKT.instance<P.Applicative<DatumF>>({ map, zip, zipWith, pure: replete });
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @tsplus static fncts.DatumOps Monad
|
|
32
|
+
* @tsplus implicit
|
|
33
|
+
*/
|
|
34
|
+
export const Monad = HKT.instance<P.Monad<DatumF>>({ map, zip, zipWith, pure: replete, flatMap });
|