@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
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import type { EitherT } from "./definition.js";
|
|
2
|
+
import type * as P from "@fncts/base/typeclass";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @tsplus static fncts.EitherTOps __call
|
|
6
|
+
*/
|
|
7
|
+
export function make<F extends HKT, FC, K, Q, W, X, I, S, R, FE, E, A>(
|
|
8
|
+
self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, Either<E, A>>,
|
|
9
|
+
): EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A> {
|
|
10
|
+
return self;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @tsplus static fncts.EitherTOps right
|
|
15
|
+
*/
|
|
16
|
+
export function right<F extends HKT, FC>(
|
|
17
|
+
F: P.Pointed<F, FC>,
|
|
18
|
+
): <K, Q, W, X, I, S, R, FE, E = never, A = never>(a: A) => EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A> {
|
|
19
|
+
return (a) => F.pure(Either.right(a));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @tsplus static fncts.EitherTOps left
|
|
24
|
+
*/
|
|
25
|
+
export function left<F extends HKT, FC>(
|
|
26
|
+
F: P.Pointed<F, FC>,
|
|
27
|
+
): <K, Q, W, X, I, S, R, FE, E, A = never>(e: E) => EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A> {
|
|
28
|
+
return (e) => F.pure(Either.left(e));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @tsplus static fncts.EitherTOps rightF
|
|
33
|
+
*/
|
|
34
|
+
export function rightF<F extends HKT, FC>(
|
|
35
|
+
F: P.Functor<F, FC>,
|
|
36
|
+
): <K, Q, W, X, I, S, R, FE, E = never, A = never>(
|
|
37
|
+
self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, A>,
|
|
38
|
+
) => EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A> {
|
|
39
|
+
return (self) => F.map(self, Either.right);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @tsplus static fncts.EitherTOps leftF
|
|
44
|
+
*/
|
|
45
|
+
export function leftF<F extends HKT, FC>(
|
|
46
|
+
F: P.Functor<F, FC>,
|
|
47
|
+
): <K, Q, W, X, I, S, R, FE, E = never, A = never>(
|
|
48
|
+
self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, E>,
|
|
49
|
+
) => EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A> {
|
|
50
|
+
return (self) => F.map(self, Either.left);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @tsplus static fncts.EitherTOps map
|
|
55
|
+
*/
|
|
56
|
+
export function map<F extends HKT, FC>(
|
|
57
|
+
F: P.Functor<F, FC>,
|
|
58
|
+
): <K, Q, W, X, I, S, R, FE, E, A, B>(
|
|
59
|
+
self: EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A>,
|
|
60
|
+
f: (a: A) => B,
|
|
61
|
+
) => EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, B> {
|
|
62
|
+
return (self, f) => F.map(self, (either) => either.map(f));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @tsplus static fncts.EitherTOps mapLeft
|
|
67
|
+
*/
|
|
68
|
+
export function mapLeft<F extends HKT, FC = HKT.None>(
|
|
69
|
+
F: P.Functor<F, FC>,
|
|
70
|
+
): <K, Q, W, X, I, S, R, FE, E, A, E1>(
|
|
71
|
+
self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, Either<E, A>>,
|
|
72
|
+
f: (e: E) => E1,
|
|
73
|
+
) => HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, Either<E1, A>> {
|
|
74
|
+
return (self, f) => F.map(self, (either) => either.mapLeft(f));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @tsplus static fncts.EitherTOps bimap
|
|
79
|
+
*/
|
|
80
|
+
export function bimap<F extends HKT, FC = HKT.None>(
|
|
81
|
+
F: P.Functor<F, FC>,
|
|
82
|
+
): <K, Q, W, X, I, S, R, FE, E, A, E1, B>(
|
|
83
|
+
self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, Either<E, A>>,
|
|
84
|
+
f: (e: E) => E1,
|
|
85
|
+
g: (a: A) => B,
|
|
86
|
+
) => HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, Either<E1, B>> {
|
|
87
|
+
return (self, f, g) => F.map(self, (either) => either.bimap(f, g));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* @tsplus static fncts.EitherTOps flatMap
|
|
92
|
+
*/
|
|
93
|
+
export function flatMap<F extends HKT, FC>(F: P.Monad<F, FC>) {
|
|
94
|
+
return <K, Q, W, X, I, S, R, FE, E, A, K1, Q1, W1, X1, I1, S1, R1, FE1, E1, B>(
|
|
95
|
+
self: EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A>,
|
|
96
|
+
f: (
|
|
97
|
+
a: A,
|
|
98
|
+
) => HKT.Kind<
|
|
99
|
+
F,
|
|
100
|
+
FC,
|
|
101
|
+
HKT.Intro<F, "K", K, K1>,
|
|
102
|
+
HKT.Intro<F, "Q", Q, Q1>,
|
|
103
|
+
HKT.Intro<F, "W", W, W1>,
|
|
104
|
+
HKT.Intro<F, "X", X, X1>,
|
|
105
|
+
HKT.Intro<F, "I", I, I1>,
|
|
106
|
+
HKT.Intro<F, "S", S, S1>,
|
|
107
|
+
HKT.Intro<F, "R", R, R1>,
|
|
108
|
+
HKT.Intro<F, "E", FE, FE1>,
|
|
109
|
+
Either<E1, B>
|
|
110
|
+
>,
|
|
111
|
+
): EitherT<
|
|
112
|
+
F,
|
|
113
|
+
FC,
|
|
114
|
+
HKT.Mix<F, "K", [K, K1]>,
|
|
115
|
+
HKT.Mix<F, "Q", [Q, Q1]>,
|
|
116
|
+
HKT.Mix<F, "W", [W, W1]>,
|
|
117
|
+
HKT.Mix<F, "X", [X, X1]>,
|
|
118
|
+
HKT.Mix<F, "I", [I, I1]>,
|
|
119
|
+
HKT.Mix<F, "S", [S, S1]>,
|
|
120
|
+
HKT.Mix<F, "R", [R, R1]>,
|
|
121
|
+
HKT.Mix<F, "E", [FE, FE1]>,
|
|
122
|
+
E | E1,
|
|
123
|
+
B
|
|
124
|
+
> =>
|
|
125
|
+
F.flatMap(
|
|
126
|
+
self,
|
|
127
|
+
(either) =>
|
|
128
|
+
either.match(
|
|
129
|
+
(e) => F.pure(Either.left(e)),
|
|
130
|
+
(a) => f(a),
|
|
131
|
+
) as HKT.Kind<
|
|
132
|
+
F,
|
|
133
|
+
FC,
|
|
134
|
+
HKT.Intro<F, "K", K, K1>,
|
|
135
|
+
HKT.Intro<F, "Q", Q, Q1>,
|
|
136
|
+
HKT.Intro<F, "W", W, W1>,
|
|
137
|
+
HKT.Intro<F, "X", X, X1>,
|
|
138
|
+
HKT.Intro<F, "I", I, I1>,
|
|
139
|
+
HKT.Intro<F, "S", S, S1>,
|
|
140
|
+
HKT.Intro<F, "R", R, R1>,
|
|
141
|
+
HKT.Intro<F, "E", FE, FE1>,
|
|
142
|
+
Either<E1, B>
|
|
143
|
+
>,
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* @tsplus static fncts.EitherTOps zipWith
|
|
149
|
+
*/
|
|
150
|
+
export function zipWith<F extends HKT, FC = HKT.None>(
|
|
151
|
+
F: P.Apply<F, FC>,
|
|
152
|
+
): <K, Q, W, X, I, S, R, EF, E, A, K1, Q1, W1, X1, I1, S1, R1, EF1, E1, B, C>(
|
|
153
|
+
self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, EF, Either<E, A>>,
|
|
154
|
+
that: HKT.Kind<
|
|
155
|
+
F,
|
|
156
|
+
FC,
|
|
157
|
+
HKT.Intro<F, "K", K, K1>,
|
|
158
|
+
HKT.Intro<F, "Q", Q, Q1>,
|
|
159
|
+
HKT.Intro<F, "W", W, W1>,
|
|
160
|
+
HKT.Intro<F, "X", X, X1>,
|
|
161
|
+
HKT.Intro<F, "I", I, I1>,
|
|
162
|
+
HKT.Intro<F, "S", S, S1>,
|
|
163
|
+
HKT.Intro<F, "R", R, R1>,
|
|
164
|
+
HKT.Intro<F, "E", EF, EF1>,
|
|
165
|
+
Either<E1, B>
|
|
166
|
+
>,
|
|
167
|
+
f: (a: A, b: B) => C,
|
|
168
|
+
) => HKT.Kind<
|
|
169
|
+
F,
|
|
170
|
+
FC,
|
|
171
|
+
HKT.Intro<F, "K", K, K1>,
|
|
172
|
+
HKT.Intro<F, "Q", Q, Q1>,
|
|
173
|
+
HKT.Intro<F, "W", W, W1>,
|
|
174
|
+
HKT.Intro<F, "X", X, X1>,
|
|
175
|
+
HKT.Intro<F, "I", I, I1>,
|
|
176
|
+
HKT.Intro<F, "S", S, S1>,
|
|
177
|
+
HKT.Intro<F, "R", R, R1>,
|
|
178
|
+
HKT.Intro<F, "E", EF, EF1>,
|
|
179
|
+
Either<E | E1, C>
|
|
180
|
+
>;
|
|
181
|
+
export function zipWith<F extends HKT>(
|
|
182
|
+
F: P.Apply<HKT.F<F>>,
|
|
183
|
+
): <E, A, E1, B, C>(
|
|
184
|
+
self: HKT.FK1<F, Either<E, A>>,
|
|
185
|
+
that: HKT.FK1<F, Either<E1, B>>,
|
|
186
|
+
f: (a: A, b: B) => C,
|
|
187
|
+
) => HKT.FK1<F, Either<E | E1, C>> {
|
|
188
|
+
return (self, that, f) => F.zipWith(self, that, (a, b) => a.zipWith(b, f));
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* @tsplus static fncts.EitherTOps orElse
|
|
193
|
+
*/
|
|
194
|
+
export function orElse<F extends HKT, FC = HKT.None>(
|
|
195
|
+
F: P.Monad<F, FC>,
|
|
196
|
+
): <K, Q, W, X, I, S, R, EF, E, A, K1, Q1, W1, X1, I1, S1, R1, EF1, E1, B>(
|
|
197
|
+
fa: HKT.Kind<F, FC, K, Q, W, X, I, S, R, EF, Either<E, A>>,
|
|
198
|
+
that: Lazy<
|
|
199
|
+
HKT.Kind<
|
|
200
|
+
F,
|
|
201
|
+
FC,
|
|
202
|
+
HKT.Intro<F, "K", K, K1>,
|
|
203
|
+
HKT.Intro<F, "Q", Q, Q1>,
|
|
204
|
+
HKT.Intro<F, "W", W, W1>,
|
|
205
|
+
HKT.Intro<F, "X", X, X1>,
|
|
206
|
+
HKT.Intro<F, "I", I, I1>,
|
|
207
|
+
HKT.Intro<F, "S", S, S1>,
|
|
208
|
+
HKT.Intro<F, "R", R, R1>,
|
|
209
|
+
HKT.Intro<F, "E", EF, EF1>,
|
|
210
|
+
Either<E1, B>
|
|
211
|
+
>
|
|
212
|
+
>,
|
|
213
|
+
) => HKT.Kind<
|
|
214
|
+
F,
|
|
215
|
+
FC,
|
|
216
|
+
HKT.Mix<F, "K", [K, K1]>,
|
|
217
|
+
HKT.Mix<F, "Q", [Q, Q1]>,
|
|
218
|
+
HKT.Mix<F, "W", [W, W1]>,
|
|
219
|
+
HKT.Mix<F, "X", [X, X1]>,
|
|
220
|
+
HKT.Mix<F, "I", [I, I1]>,
|
|
221
|
+
HKT.Mix<F, "S", [S, S1]>,
|
|
222
|
+
HKT.Mix<F, "R", [R, R1]>,
|
|
223
|
+
HKT.Mix<F, "E", [EF, EF1]>,
|
|
224
|
+
Either<E | E1, A | B>
|
|
225
|
+
>;
|
|
226
|
+
export function orElse<F>(
|
|
227
|
+
F: P.Monad<HKT.F1<F>>,
|
|
228
|
+
): <E, A, E1, B>(
|
|
229
|
+
self: HKT.FK1<F, Either<E, A>>,
|
|
230
|
+
that: Lazy<HKT.FK1<F, Either<E1, B>>>,
|
|
231
|
+
) => HKT.FK1<F, Either<E | E1, A | B>> {
|
|
232
|
+
return (self, that) =>
|
|
233
|
+
F.flatMap(self, (either) =>
|
|
234
|
+
either.match(
|
|
235
|
+
() => that(),
|
|
236
|
+
() => F.pure(either),
|
|
237
|
+
),
|
|
238
|
+
);
|
|
239
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tsplus type fncts.EitherT
|
|
3
|
+
*/
|
|
4
|
+
export type EitherT<F extends HKT, FC, K, Q, W, X, I, S, R, EF, E, A> = HKT.Kind<
|
|
5
|
+
F,
|
|
6
|
+
FC,
|
|
7
|
+
K,
|
|
8
|
+
Q,
|
|
9
|
+
W,
|
|
10
|
+
X,
|
|
11
|
+
I,
|
|
12
|
+
S,
|
|
13
|
+
R,
|
|
14
|
+
EF,
|
|
15
|
+
Either<E, A>
|
|
16
|
+
>;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @tsplus type fncts.EitherTOps
|
|
20
|
+
*/
|
|
21
|
+
export interface EitherTOps {}
|
|
22
|
+
|
|
23
|
+
export const EitherT: EitherTOps = {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @tsplus fluent fncts.Environment add
|
|
3
3
|
*/
|
|
4
|
-
export function add<R,
|
|
4
|
+
export function add<R, H extends S, S = H>(self: Environment<R>, service: H, tag: Tag<S>): Environment<R | S> {
|
|
5
5
|
const self0 = self.index === Number.MAX_SAFE_INTEGER ? self.clean : self;
|
|
6
6
|
return new Environment(self0.map.set(tag, [service, self0.index]), self0.index + 1);
|
|
7
7
|
}
|
|
@@ -11,11 +11,13 @@ export function add<R, S, H extends S = S>(self: Environment<R>, service: H, tag
|
|
|
11
11
|
*/
|
|
12
12
|
export const empty = Environment();
|
|
13
13
|
|
|
14
|
+
type Tags<R> = R extends infer S ? Tag<S> : never;
|
|
15
|
+
|
|
14
16
|
/**
|
|
15
17
|
* @tsplus fluent fncts.Environment get
|
|
16
18
|
*/
|
|
17
|
-
export function get<R extends
|
|
18
|
-
return self.unsafeGet(tag);
|
|
19
|
+
export function get<R, T extends Tags<R>>(self: Environment<R>, tag: T): T extends Tag<infer S> ? S : never {
|
|
20
|
+
return unsafeCoerce(self.unsafeGet(tag));
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
/**
|
|
@@ -28,7 +30,7 @@ export function getMaybe<R extends Has<S>, S>(self: Environment<R>, tag: Tag<S>)
|
|
|
28
30
|
/**
|
|
29
31
|
* @tsplus static fncts.EnvironmentOps __call
|
|
30
32
|
*/
|
|
31
|
-
export function make(): Environment<
|
|
33
|
+
export function make(): Environment<never> {
|
|
32
34
|
return new Environment(HashMap.makeDefault(), 0, HashMap.makeDefault());
|
|
33
35
|
}
|
|
34
36
|
|
|
@@ -88,6 +90,6 @@ export function unsafeGet<R, S>(self: Environment<R>, tag: Tag<S>): S {
|
|
|
88
90
|
/**
|
|
89
91
|
* @tsplus fluent fncts.Environment update
|
|
90
92
|
*/
|
|
91
|
-
export function update<R extends
|
|
92
|
-
return self.add(f(self.
|
|
93
|
+
export function update<R, S extends R>(self: Environment<R>, f: (s: S) => S, tag: Tag<S>): Environment<R> {
|
|
94
|
+
return self.add(f(self.unsafeGet(tag)), tag);
|
|
93
95
|
}
|
|
@@ -13,9 +13,9 @@ export class Environment<R> implements Hashable, Equatable {
|
|
|
13
13
|
readonly _typeId: EnvSymbol = EnvSymbol;
|
|
14
14
|
readonly [EnvSymbol]!: (_: never) => R;
|
|
15
15
|
constructor(
|
|
16
|
-
readonly map: HashMap<Tag<
|
|
16
|
+
readonly map: HashMap<Tag<any>, readonly [unknown, number]>,
|
|
17
17
|
readonly index: number,
|
|
18
|
-
public cache: HashMap<Tag<
|
|
18
|
+
public cache: HashMap<Tag<any>, unknown> = HashMap.makeDefault(),
|
|
19
19
|
) {}
|
|
20
20
|
|
|
21
21
|
get [Symbol.hash](): number {
|
|
@@ -30,8 +30,8 @@ export function zipWith_<A, B, C>(fa: Identity<A>, fb: Identity<B>, f: (a: A, b:
|
|
|
30
30
|
/**
|
|
31
31
|
* @tsplus fluent fncts.Identity zip
|
|
32
32
|
*/
|
|
33
|
-
export function zip_<A, B>(fa: Identity<A>, fb: Identity<B>): Identity<
|
|
34
|
-
return fa.zipWith(fb, (a, b) =>
|
|
33
|
+
export function zip_<A, B>(fa: Identity<A>, fb: Identity<B>): Identity<Zipped.Make<A, B>> {
|
|
34
|
+
return fa.zipWith(fb, (a, b) => Zipped(a, b));
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/**
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import type * as P from "../../typeclass.js";
|
|
2
2
|
import type { IdentityN } from "@fncts/base/data/Identity/definition";
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { map_, pure, zip_, zipWith_ } from "./api.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @tsplus static fncts.IdentityOps Functor
|
|
8
8
|
*/
|
|
9
|
-
export const Functor
|
|
9
|
+
export const Functor = HKT.instance<P.Functor<IdentityN>>({
|
|
10
10
|
map: map_,
|
|
11
|
-
};
|
|
11
|
+
});
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* @tsplus static fncts.IdentityOps Apply
|
|
15
15
|
*/
|
|
16
|
-
export const Apply
|
|
16
|
+
export const Apply = HKT.instance<P.Apply<IdentityN>>({
|
|
17
17
|
...Functor,
|
|
18
18
|
zip: zip_,
|
|
19
19
|
zipWith: zipWith_,
|
|
20
|
-
};
|
|
20
|
+
});
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* @tsplus static fncts.IdentityOps Applicative
|
|
24
24
|
*/
|
|
25
|
-
export const Applicative
|
|
25
|
+
export const Applicative = HKT.instance<P.Applicative<IdentityN>>({
|
|
26
26
|
...Apply,
|
|
27
27
|
pure,
|
|
28
|
-
};
|
|
28
|
+
});
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tsplus type fncts.Intervals
|
|
3
|
+
* @tsplus companion fncts.IntervalsOps
|
|
4
|
+
*/
|
|
5
|
+
export class Intervals {
|
|
6
|
+
constructor(readonly intervals: List<Interval>) {}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @tsplus static fncts.IntervalsOps __call
|
|
11
|
+
*/
|
|
12
|
+
export function make(intervals: List<Interval>): Intervals {
|
|
13
|
+
return new Intervals(intervals);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @tsplus fluent fncts.Intervals union
|
|
18
|
+
* @tsplus operator fncts.Intervals ||
|
|
19
|
+
*/
|
|
20
|
+
export function union(self: Intervals, that: Intervals): Intervals {
|
|
21
|
+
if (that.intervals.isEmpty()) {
|
|
22
|
+
return self;
|
|
23
|
+
} else if (self.intervals.isEmpty()) {
|
|
24
|
+
return that;
|
|
25
|
+
} else if (self.intervals.head.startMilliseconds < that.intervals.head.startMilliseconds) {
|
|
26
|
+
return unionLoop(self.intervals.tail, that.intervals, self.intervals.head, Nil());
|
|
27
|
+
} else {
|
|
28
|
+
return unionLoop(self.intervals, that.intervals.tail, that.intervals.head, Nil());
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @tsplus tailRec
|
|
34
|
+
*/
|
|
35
|
+
function unionLoop(left: List<Interval>, right: List<Interval>, interval: Interval, acc: List<Interval>): Intervals {
|
|
36
|
+
if (left.isEmpty() && right.isEmpty()) {
|
|
37
|
+
return Intervals((interval + acc).reverse);
|
|
38
|
+
} else if (left.isEmpty() && right.isNonEmpty()) {
|
|
39
|
+
const rightHead = right.head;
|
|
40
|
+
const rights = right.tail;
|
|
41
|
+
if (interval.endMilliseconds < rightHead.startMilliseconds)
|
|
42
|
+
return unionLoop(Nil(), rights, rightHead, interval + acc);
|
|
43
|
+
else return unionLoop(Nil(), rights, Interval(interval.startMilliseconds, rightHead.endMilliseconds), acc);
|
|
44
|
+
} else if (left.isNonEmpty() && right.isEmpty()) {
|
|
45
|
+
const leftHead = left.head;
|
|
46
|
+
const lefts = left.tail;
|
|
47
|
+
if (interval.endMilliseconds < leftHead.startMilliseconds) return unionLoop(lefts, Nil(), leftHead, interval + acc);
|
|
48
|
+
else return unionLoop(lefts, Nil(), Interval(interval.startMilliseconds, leftHead.endMilliseconds), acc);
|
|
49
|
+
} else {
|
|
50
|
+
const leftHead = left.unsafeHead;
|
|
51
|
+
const lefts = left.unsafeTail;
|
|
52
|
+
const rightHead = right.unsafeHead;
|
|
53
|
+
const rights = right.unsafeTail;
|
|
54
|
+
if (leftHead.startMilliseconds < rightHead.startMilliseconds) {
|
|
55
|
+
if (interval.endMilliseconds < leftHead.startMilliseconds)
|
|
56
|
+
return unionLoop(lefts, right, leftHead, interval + acc);
|
|
57
|
+
else return unionLoop(lefts, right, Interval(interval.startMilliseconds, leftHead.endMilliseconds), acc);
|
|
58
|
+
} else {
|
|
59
|
+
if (interval.endMilliseconds < rightHead.startMilliseconds)
|
|
60
|
+
return unionLoop(left, rights, rightHead, interval + acc);
|
|
61
|
+
else return unionLoop(left, rights, Interval(interval.startMilliseconds, rightHead.endMilliseconds), acc);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @tsplus fluent fncts.Intervals intersect
|
|
68
|
+
* @tsplus operator fncts.Intervals &&
|
|
69
|
+
*/
|
|
70
|
+
export function intersect(self: Intervals, that: Intervals): Intervals {
|
|
71
|
+
return intersectLoop(self.intervals, that.intervals, Nil());
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @tsplus tailRec
|
|
76
|
+
*/
|
|
77
|
+
function intersectLoop(left: List<Interval>, right: List<Interval>, acc: List<Interval>): Intervals {
|
|
78
|
+
if (left.isEmpty() || right.isEmpty()) {
|
|
79
|
+
return Intervals(acc.reverse);
|
|
80
|
+
} else {
|
|
81
|
+
const leftHead = left.head;
|
|
82
|
+
const lefts = left.tail;
|
|
83
|
+
const rightHead = right.head;
|
|
84
|
+
const rights = right.tail;
|
|
85
|
+
const interval = leftHead.intersect(rightHead);
|
|
86
|
+
const intervals = interval.isEmpty ? acc : interval + acc;
|
|
87
|
+
if (leftHead < rightHead) return intersectLoop(lefts, right, intervals);
|
|
88
|
+
else return intersectLoop(left, rights, intervals);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @tsplus getter fncts.Intervals start
|
|
94
|
+
*/
|
|
95
|
+
export function start(self: Intervals): number {
|
|
96
|
+
return self.intervals.head.getOrElse(Interval.empty).startMilliseconds;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* @tsplus getter fncts.Intervals end
|
|
101
|
+
*/
|
|
102
|
+
export function end(self: Intervals): number {
|
|
103
|
+
return self.intervals.head.getOrElse(Interval.empty).endMilliseconds;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @tsplus fluent fncts.Intervals lt
|
|
108
|
+
* @tsplus operator fncts.Intervals <
|
|
109
|
+
*/
|
|
110
|
+
export function lt(self: Intervals, that: Intervals): boolean {
|
|
111
|
+
return self.start < that.start;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @tsplus fluent fncts.Intervals max
|
|
116
|
+
*/
|
|
117
|
+
export function max(self: Intervals, that: Intervals): Intervals {
|
|
118
|
+
return self < that ? that : self;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @tsplus getter fncts.Intervals isNonEmpty
|
|
123
|
+
*/
|
|
124
|
+
export function isNonEmpty(self: Intervals): boolean {
|
|
125
|
+
return self.intervals.isNonEmpty();
|
|
126
|
+
}
|
package/_src/data/Maybe/api.ts
CHANGED
|
@@ -172,6 +172,6 @@ export function zipWith_<A, B, C>(self: Maybe<A>, fb: Maybe<B>, f: (a: A, b: B)
|
|
|
172
172
|
/**
|
|
173
173
|
* @tsplus fluent fncts.Maybe zip
|
|
174
174
|
*/
|
|
175
|
-
export function zip_<A, B>(self: Maybe<A>, that: Maybe<B>): Maybe<
|
|
176
|
-
return self.zipWith(that, (a, b) =>
|
|
175
|
+
export function zip_<A, B>(self: Maybe<A>, that: Maybe<B>): Maybe<Zipped.Make<A, B>> {
|
|
176
|
+
return self.zipWith(that, (a, b) => Zipped(a, b));
|
|
177
177
|
}
|
|
@@ -8,7 +8,12 @@ export const enum MaybeTag {
|
|
|
8
8
|
export const MaybeTypeId = Symbol.for("fncts.Maybe");
|
|
9
9
|
export type MaybeTypdId = typeof MaybeTypeId;
|
|
10
10
|
|
|
11
|
-
export
|
|
11
|
+
export interface MaybeF extends HKT {
|
|
12
|
+
type: Maybe<this["A"]>;
|
|
13
|
+
variance: {
|
|
14
|
+
A: "+";
|
|
15
|
+
};
|
|
16
|
+
}
|
|
12
17
|
|
|
13
18
|
const _justHash = Hashable.string("fncts.Just");
|
|
14
19
|
const _nothingHash = Hashable.string("fncts.Nothing");
|
|
@@ -18,10 +23,8 @@ const _nothingHash = Hashable.string("fncts.Nothing");
|
|
|
18
23
|
* @tsplus companion fncts.MaybeOps
|
|
19
24
|
*/
|
|
20
25
|
export class Maybe<A> {
|
|
26
|
+
readonly _A!: () => A;
|
|
21
27
|
readonly _typeId: MaybeTypdId = MaybeTypeId;
|
|
22
|
-
readonly [HKT.F]!: MaybeF;
|
|
23
|
-
readonly [HKT.A]!: () => A;
|
|
24
|
-
readonly [HKT.T]!: Maybe<HKT._A<this>>;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
/**
|
|
@@ -17,32 +17,32 @@ import {
|
|
|
17
17
|
} from "./api.js";
|
|
18
18
|
import { just } from "./constructors.js";
|
|
19
19
|
|
|
20
|
-
export const Functor
|
|
20
|
+
export const Functor = HKT.instance<P.Functor<MaybeF>>({ map: map_ });
|
|
21
21
|
|
|
22
|
-
export const Apply
|
|
22
|
+
export const Apply = HKT.instance<P.Apply<MaybeF>>({ ...Functor, zip: zip_, zipWith: zipWith_ });
|
|
23
23
|
|
|
24
|
-
export const Applicative
|
|
24
|
+
export const Applicative = HKT.instance<P.Applicative<MaybeF>>({
|
|
25
25
|
...Apply,
|
|
26
26
|
pure: just,
|
|
27
|
-
};
|
|
27
|
+
});
|
|
28
28
|
|
|
29
|
-
export const Monad
|
|
29
|
+
export const Monad = HKT.instance<P.Monad<MaybeF>>({
|
|
30
30
|
...Applicative,
|
|
31
31
|
flatMap: flatMap_,
|
|
32
|
-
};
|
|
32
|
+
});
|
|
33
33
|
|
|
34
|
-
export const Foldable
|
|
34
|
+
export const Foldable = HKT.instance<P.Foldable<MaybeF>>({
|
|
35
35
|
foldLeft: foldLeft_,
|
|
36
36
|
foldRight: foldRight_,
|
|
37
|
-
};
|
|
37
|
+
});
|
|
38
38
|
|
|
39
|
-
export const Filterable
|
|
39
|
+
export const Filterable = HKT.instance<P.Filterable<MaybeF>>({
|
|
40
40
|
...Functor,
|
|
41
41
|
filter: filter_,
|
|
42
42
|
filterMap: filterMap_,
|
|
43
43
|
partition: partition_,
|
|
44
44
|
partitionMap: partitionMap_,
|
|
45
|
-
};
|
|
45
|
+
});
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
48
|
* @tsplus derive fncts.Guard[fncts.Maybe]<_> 10
|
package/_src/data/Newtype.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @tsplus type fncts.Newtype
|
|
3
3
|
*/
|
|
4
|
-
export interface Newtype<URI, A> {
|
|
4
|
+
export interface Newtype<URI, A, C = HKT.None> {
|
|
5
5
|
readonly _URI: URI;
|
|
6
|
-
readonly
|
|
6
|
+
readonly _A: A;
|
|
7
|
+
readonly _C: C;
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
export declare namespace Newtype {
|
|
10
|
-
export type Iso<N extends NewtypeHKT> = NewtypeIso<N>;
|
|
11
|
+
export type Iso<N extends NewtypeHKT, C = N["type"]["_C"]> = NewtypeIso<N, C>;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
/**
|
|
@@ -18,22 +19,42 @@ export interface NewtypeOps {}
|
|
|
18
19
|
export const Newtype: NewtypeOps = {};
|
|
19
20
|
|
|
20
21
|
export interface NewtypeHKT extends HKT {
|
|
21
|
-
readonly
|
|
22
|
+
readonly type: Newtype<any, any>;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
export interface NewtypeIso<N extends NewtypeHKT> {
|
|
25
|
+
export interface NewtypeIso<N extends NewtypeHKT, C = N["type"]["_C"]> {
|
|
25
26
|
/**
|
|
26
27
|
* @tsplus macro identity
|
|
27
28
|
*/
|
|
28
|
-
get: <
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
get: <
|
|
30
|
+
K extends HKT.GetExtends<C, "K", any>,
|
|
31
|
+
Q extends HKT.GetExtends<C, "Q", any>,
|
|
32
|
+
W extends HKT.GetExtends<C, "W", any>,
|
|
33
|
+
X extends HKT.GetExtends<C, "X", any>,
|
|
34
|
+
I extends HKT.GetExtends<C, "I", any>,
|
|
35
|
+
S extends HKT.GetExtends<C, "S", any>,
|
|
36
|
+
R extends HKT.GetExtends<C, "E", any>,
|
|
37
|
+
E extends HKT.GetExtends<C, "E", any>,
|
|
38
|
+
A extends HKT.GetExtends<C, "A", any>,
|
|
39
|
+
>(
|
|
40
|
+
_: HKT.Kind<N, N["type"]["_C"], K, Q, W, X, I, S, R, E, A>["_A"],
|
|
41
|
+
) => HKT.Kind<N, HKT.None, K, Q, W, X, I, S, R, E, A>;
|
|
31
42
|
/**
|
|
32
43
|
* @tsplus macro identity
|
|
33
44
|
*/
|
|
34
|
-
reverseGet: <
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
reverseGet: <
|
|
46
|
+
K extends HKT.GetExtends<C, "K", any>,
|
|
47
|
+
Q extends HKT.GetExtends<C, "Q", any>,
|
|
48
|
+
W extends HKT.GetExtends<C, "W", any>,
|
|
49
|
+
X extends HKT.GetExtends<C, "X", any>,
|
|
50
|
+
I extends HKT.GetExtends<C, "I", any>,
|
|
51
|
+
S extends HKT.GetExtends<C, "S", any>,
|
|
52
|
+
R extends HKT.GetExtends<C, "E", any>,
|
|
53
|
+
E extends HKT.GetExtends<C, "E", any>,
|
|
54
|
+
A extends HKT.GetExtends<C, "A", any>,
|
|
55
|
+
>(
|
|
56
|
+
_: HKT.Kind<N, HKT.None, K, Q, W, X, I, S, R, E, A>,
|
|
57
|
+
) => HKT.Kind<N, HKT.None, K, Q, W, X, I, S, R, E, A>["_A"];
|
|
37
58
|
}
|
|
38
59
|
|
|
39
60
|
/**
|
|
@@ -11,8 +11,8 @@ const _tagHash = Hashable.string("fncts.Tag");
|
|
|
11
11
|
* @tsplus type fncts.Tag
|
|
12
12
|
* @tsplus companion fncts.TagOps
|
|
13
13
|
*/
|
|
14
|
-
export class Tag<T> implements Hashable, Equatable {
|
|
15
|
-
|
|
14
|
+
export class Tag<in out T> implements Hashable, Equatable {
|
|
15
|
+
declare _T: (_: T) => T;
|
|
16
16
|
readonly _typeId: TagTypeId = TagTypeId;
|
|
17
17
|
private static counter = new AtomicNumber(0);
|
|
18
18
|
readonly id = Tag.counter.getAndIncrement();
|