@fncts/base 0.0.39 → 0.0.41
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/AsyncIterable/api.cjs +384 -0
- package/_cjs/collection/AsyncIterable/api.cjs.map +1 -0
- package/_cjs/collection/AsyncIterable/definition.cjs +2 -0
- package/_cjs/collection/AsyncIterable/definition.cjs.map +1 -0
- package/_cjs/collection/{compat/Array.cjs → AsyncIterable.cjs} +3 -3
- package/_cjs/collection/AsyncIterable.cjs.map +1 -0
- package/_cjs/collection/Iterable/api/traverseConc.cjs +1 -2
- package/_cjs/collection/Iterable/api/traverseConc.cjs.map +1 -1
- package/_cjs/collection/Iterable/api.cjs +180 -137
- package/_cjs/collection/Iterable/api.cjs.map +1 -1
- package/_cjs/collection/Iterable/constructors.cjs.map +1 -1
- package/_cjs/collection/compat/ArrayLike/api.cjs +1 -2
- package/_cjs/collection/compat/ArrayLike/api.cjs.map +1 -1
- package/_cjs/collection/compat/ArrayLike/definition.cjs +0 -4
- package/_cjs/collection/compat/Map/definition.cjs +0 -4
- package/_cjs/collection/compat/Set/definition.cjs +0 -4
- package/_cjs/collection/compat.cjs +0 -4
- package/_cjs/collection/immutable/Conc/api/makeBy.cjs +1 -2
- package/_cjs/collection/immutable/Conc/api/makeBy.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/api/replicate.cjs +1 -2
- package/_cjs/collection/immutable/Conc/api/replicate.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/api.cjs +1 -2
- package/_cjs/collection/immutable/Conc/api.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/constructors.cjs +3 -4
- package/_cjs/collection/immutable/Conc/constructors.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/definition.cjs +3 -3
- package/_cjs/collection/immutable/Conc/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/Dictionary/api.cjs +1 -2
- package/_cjs/collection/immutable/Dictionary/api.cjs.map +1 -1
- package/_cjs/collection/immutable/Dictionary/definition.cjs +1 -2
- package/_cjs/collection/immutable/Dictionary/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/HashMap/api.cjs +1 -2
- package/_cjs/collection/immutable/HashMap/api.cjs.map +1 -1
- package/_cjs/collection/immutable/HashMap/definition.cjs +1 -2
- package/_cjs/collection/immutable/HashMap/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/HashMap/internal.cjs +1 -2
- package/_cjs/collection/immutable/HashMap/internal.cjs.map +1 -1
- package/_cjs/collection/immutable/HashSet/api.cjs +1 -2
- package/_cjs/collection/immutable/HashSet/api.cjs.map +1 -1
- package/_cjs/collection/immutable/HashSet/definition.cjs +1 -2
- package/_cjs/collection/immutable/HashSet/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/List/api/foldLeft.cjs +1 -2
- package/_cjs/collection/immutable/List/api/foldLeft.cjs.map +1 -1
- package/_cjs/collection/immutable/List/api/unsafeTail.cjs +1 -2
- package/_cjs/collection/immutable/List/api/unsafeTail.cjs.map +1 -1
- package/_cjs/collection/immutable/List/api.cjs +3 -4
- package/_cjs/collection/immutable/List/api.cjs.map +1 -1
- package/_cjs/collection/immutable/List/constructors.cjs +1 -2
- package/_cjs/collection/immutable/List/constructors.cjs.map +1 -1
- package/_cjs/collection/immutable/List/definition.cjs +1 -2
- package/_cjs/collection/immutable/List/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/Queue/api.cjs +1 -2
- package/_cjs/collection/immutable/Queue/api.cjs.map +1 -1
- package/_cjs/collection/immutable/Queue/constructors.cjs +1 -2
- package/_cjs/collection/immutable/Queue/constructors.cjs.map +1 -1
- package/_cjs/collection/immutable/Queue/definition.cjs +1 -2
- package/_cjs/collection/immutable/Queue/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/Queue/guards.cjs +1 -2
- package/_cjs/collection/immutable/Queue/guards.cjs.map +1 -1
- package/_cjs/collection/immutable/ReadonlyArray/api/chunksOf.cjs +18 -0
- package/_cjs/collection/immutable/ReadonlyArray/api/chunksOf.cjs.map +1 -0
- package/_cjs/collection/immutable/ReadonlyArray/api/splitAt.cjs +15 -0
- package/_cjs/collection/immutable/ReadonlyArray/api/splitAt.cjs.map +1 -0
- package/_cjs/collection/immutable/ReadonlyArray/api/splitWhere.cjs +26 -0
- package/_cjs/collection/immutable/ReadonlyArray/api/splitWhere.cjs.map +1 -0
- package/_cjs/collection/immutable/{ImmutableArray → ReadonlyArray}/api.cjs +562 -538
- package/_cjs/collection/immutable/ReadonlyArray/api.cjs.map +1 -0
- package/_cjs/collection/immutable/ReadonlyArray/constructors.cjs +55 -0
- package/_cjs/collection/immutable/ReadonlyArray/constructors.cjs.map +1 -0
- package/_cjs/collection/immutable/ReadonlyArray/definition.cjs.map +1 -0
- package/_cjs/collection/immutable/{ImmutableArray → ReadonlyArray}/instances.cjs +5 -7
- package/_cjs/collection/immutable/ReadonlyArray/instances.cjs.map +1 -0
- package/_cjs/collection/immutable/{ImmutableArray.cjs → ReadonlyArray.cjs} +8 -19
- package/_cjs/collection/immutable/ReadonlyArray.cjs.map +1 -0
- package/_cjs/collection/immutable/ReadonlyNonEmptyArray/api.cjs +472 -0
- package/_cjs/collection/immutable/ReadonlyNonEmptyArray/api.cjs.map +1 -0
- package/_cjs/collection/immutable/ReadonlyNonEmptyArray/constructors.cjs +79 -0
- package/_cjs/collection/immutable/ReadonlyNonEmptyArray/constructors.cjs.map +1 -0
- package/_cjs/collection/immutable/ReadonlyNonEmptyArray/definition.cjs +2 -0
- package/_cjs/collection/immutable/ReadonlyNonEmptyArray/definition.cjs.map +1 -0
- package/_cjs/collection/immutable/ReadonlyNonEmptyArray/destructors.cjs +49 -0
- package/_cjs/collection/immutable/ReadonlyNonEmptyArray/destructors.cjs.map +1 -0
- package/_cjs/collection/immutable/{ImmutableNonEmptyArray → ReadonlyNonEmptyArray}/instances.cjs +3 -4
- package/_cjs/collection/immutable/ReadonlyNonEmptyArray/instances.cjs.map +1 -0
- package/_cjs/collection/immutable/{ImmutableNonEmptyArray.cjs → ReadonlyNonEmptyArray.cjs} +6 -6
- package/_cjs/collection/immutable/ReadonlyNonEmptyArray.cjs.map +1 -0
- package/_cjs/collection/immutable/RoseTree/api.cjs +1 -2
- package/_cjs/collection/immutable/RoseTree/api.cjs.map +1 -1
- package/_cjs/collection/immutable/RoseTree/definition.cjs +1 -2
- package/_cjs/collection/immutable/RoseTree/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/SortedMap/api.cjs +1 -2
- package/_cjs/collection/immutable/SortedMap/api.cjs.map +1 -1
- package/_cjs/collection/immutable/SortedMap/iterator.cjs +1 -2
- package/_cjs/collection/immutable/SortedMap/iterator.cjs.map +1 -1
- package/_cjs/collection/immutable/Vector/api.cjs +229 -230
- package/_cjs/collection/immutable/Vector/api.cjs.map +1 -1
- package/_cjs/collection/immutable/Vector/definition.cjs +1 -2
- package/_cjs/collection/immutable/Vector/definition.cjs.map +1 -1
- package/_cjs/collection/immutable.cjs +0 -4
- package/_cjs/collection/internal.cjs +0 -4
- package/_cjs/collection/mutable/ArrayDeque.cjs +1 -2
- package/_cjs/collection/mutable/ArrayDeque.cjs.map +1 -1
- package/_cjs/collection/mutable/HashMap.cjs +1 -2
- package/_cjs/collection/mutable/HashMap.cjs.map +1 -1
- package/_cjs/collection/mutable/HashSet.cjs +1 -2
- package/_cjs/collection/mutable/HashSet.cjs.map +1 -1
- package/_cjs/collection/mutable/ListBuffer.cjs +1 -2
- package/_cjs/collection/mutable/ListBuffer.cjs.map +1 -1
- package/_cjs/collection/mutable.cjs +0 -4
- package/_cjs/collection/weak/IterableWeakMap.cjs +1 -2
- package/_cjs/collection/weak/IterableWeakMap.cjs.map +1 -1
- package/_cjs/collection/weak.cjs +0 -4
- package/_cjs/collection.cjs +0 -4
- package/_cjs/control/Eval/api.cjs +89 -41
- package/_cjs/control/Eval/api.cjs.map +1 -1
- package/_cjs/control/Eval/constructors.cjs +5 -1
- package/_cjs/control/Eval/constructors.cjs.map +1 -1
- package/_cjs/control/Eval/instance.cjs +1 -2
- package/_cjs/control/Eval/instance.cjs.map +1 -1
- package/_cjs/control/Eval/run.cjs +1 -2
- package/_cjs/control/Eval/run.cjs.map +1 -1
- package/_cjs/control/Pure/api.cjs +1 -2
- package/_cjs/control/Pure/api.cjs.map +1 -1
- package/_cjs/control/Pure/definition.cjs +1 -2
- package/_cjs/control/Pure/definition.cjs.map +1 -1
- package/_cjs/control/Pure/instances.cjs +1 -2
- package/_cjs/control/Pure/instances.cjs.map +1 -1
- package/_cjs/control/Pure/runtime.cjs +15 -10
- package/_cjs/control/Pure/runtime.cjs.map +1 -1
- package/_cjs/control.cjs +0 -4
- package/_cjs/data/Byte.cjs +0 -4
- package/_cjs/data/CaseClass.cjs +11 -14
- package/_cjs/data/CaseClass.cjs.map +1 -1
- package/_cjs/data/Cause/api/fold.cjs +33 -34
- package/_cjs/data/Cause/api/fold.cjs.map +1 -1
- package/_cjs/data/Cause/api/isEmpty.cjs +1 -2
- package/_cjs/data/Cause/api/isEmpty.cjs.map +1 -1
- package/_cjs/data/Cause/api/linearize.cjs +1 -2
- package/_cjs/data/Cause/api/linearize.cjs.map +1 -1
- package/_cjs/data/Cause/api/prettyPrint.cjs +1 -2
- package/_cjs/data/Cause/api/prettyPrint.cjs.map +1 -1
- package/_cjs/data/Cause/api/unified.cjs +1 -2
- package/_cjs/data/Cause/api/unified.cjs.map +1 -1
- package/_cjs/data/Cause/api.cjs +1 -2
- package/_cjs/data/Cause/api.cjs.map +1 -1
- package/_cjs/data/Cause/definition.cjs +1 -2
- package/_cjs/data/Cause/definition.cjs.map +1 -1
- package/_cjs/data/Const/api.cjs +7 -7
- package/_cjs/data/Const/api.cjs.map +1 -1
- package/_cjs/data/Const/instances.cjs +12 -13
- package/_cjs/data/Const/instances.cjs.map +1 -1
- package/_cjs/data/Data.cjs +1 -2
- package/_cjs/data/Data.cjs.map +1 -1
- package/_cjs/data/Date/definition.cjs +0 -4
- package/_cjs/data/Datum/api.cjs +110 -113
- package/_cjs/data/Datum/api.cjs.map +1 -1
- package/_cjs/data/Datum/definition.cjs +1 -2
- package/_cjs/data/Datum/definition.cjs.map +1 -1
- package/_cjs/data/Datum/instances.cjs +1 -2
- package/_cjs/data/Datum/instances.cjs.map +1 -1
- package/_cjs/data/Datum.cjs +39 -0
- package/_cjs/data/Datum.cjs.map +1 -0
- package/_cjs/data/DatumEither/api.cjs +56 -57
- package/_cjs/data/DatumEither/api.cjs.map +1 -1
- package/_cjs/data/Duration/api.cjs +1 -2
- package/_cjs/data/Duration/api.cjs.map +1 -1
- package/_cjs/data/Duration/definition.cjs +1 -2
- package/_cjs/data/Duration/definition.cjs.map +1 -1
- package/_cjs/data/Either/api/align.cjs +1 -2
- package/_cjs/data/Either/api/align.cjs.map +1 -1
- package/_cjs/data/Either/api/alignWith.cjs +1 -2
- package/_cjs/data/Either/api/alignWith.cjs.map +1 -1
- package/_cjs/data/Either/api.cjs +53 -55
- package/_cjs/data/Either/api.cjs.map +1 -1
- package/_cjs/data/Either/constructors.cjs +21 -22
- package/_cjs/data/Either/constructors.cjs.map +1 -1
- package/_cjs/data/Either/definition.cjs +1 -2
- package/_cjs/data/Either/definition.cjs.map +1 -1
- package/_cjs/data/Either/instances.cjs +1 -2
- package/_cjs/data/Either/instances.cjs.map +1 -1
- package/_cjs/data/EitherT/api.cjs +28 -29
- package/_cjs/data/EitherT/api.cjs.map +1 -1
- package/_cjs/data/Environment/api.cjs +1 -2
- package/_cjs/data/Environment/api.cjs.map +1 -1
- package/_cjs/data/Environment/definition.cjs +1 -2
- package/_cjs/data/Environment/definition.cjs.map +1 -1
- package/_cjs/data/EnvironmentPatch.cjs +2 -3
- package/_cjs/data/EnvironmentPatch.cjs.map +1 -1
- package/_cjs/data/Eq/api.cjs +189 -5
- package/_cjs/data/Eq/api.cjs.map +1 -1
- package/_cjs/data/Eq/derivations.cjs +10 -21
- package/_cjs/data/Eq/derivations.cjs.map +1 -1
- package/_cjs/data/Equatable/api.cjs +1 -2
- package/_cjs/data/Equatable/api.cjs.map +1 -1
- package/_cjs/data/Equatable/definition.cjs +1 -2
- package/_cjs/data/Equatable/definition.cjs.map +1 -1
- package/_cjs/data/Exit/api.cjs +90 -80
- package/_cjs/data/Exit/api.cjs.map +1 -1
- package/_cjs/data/Exit/constructors.cjs +1 -2
- package/_cjs/data/Exit/constructors.cjs.map +1 -1
- package/_cjs/data/Exit/definition.cjs +1 -2
- package/_cjs/data/Exit/definition.cjs.map +1 -1
- package/_cjs/data/FiberId/api.cjs +1 -2
- package/_cjs/data/FiberId/api.cjs.map +1 -1
- package/_cjs/data/FiberId/definition.cjs +1 -2
- package/_cjs/data/FiberId/definition.cjs.map +1 -1
- package/_cjs/data/Guard/api.cjs +13 -17
- package/_cjs/data/Guard/api.cjs.map +1 -1
- package/_cjs/data/HashEq.cjs +1 -2
- package/_cjs/data/HashEq.cjs.map +1 -1
- package/_cjs/data/Hashable/definition.cjs +1 -2
- package/_cjs/data/Hashable/definition.cjs.map +1 -1
- package/_cjs/data/Hashable/hash.cjs +1 -2
- package/_cjs/data/Hashable/hash.cjs.map +1 -1
- package/_cjs/data/Identity/api.cjs +1 -2
- package/_cjs/data/Identity/api.cjs.map +1 -1
- package/_cjs/data/Identity/definition.cjs +1 -2
- package/_cjs/data/Identity/definition.cjs.map +1 -1
- package/_cjs/data/Identity/instances.cjs +1 -2
- package/_cjs/data/Identity/instances.cjs.map +1 -1
- package/_cjs/data/Interval.cjs +1 -2
- package/_cjs/data/Interval.cjs.map +1 -1
- package/_cjs/data/Intervals.cjs +1 -2
- package/_cjs/data/Intervals.cjs.map +1 -1
- package/_cjs/data/Maybe/api.cjs +73 -60
- package/_cjs/data/Maybe/api.cjs.map +1 -1
- package/_cjs/data/Maybe/constructors.cjs +37 -38
- package/_cjs/data/Maybe/constructors.cjs.map +1 -1
- package/_cjs/data/Maybe/definition.cjs +1 -2
- package/_cjs/data/Maybe/definition.cjs.map +1 -1
- package/_cjs/data/Maybe/instances.cjs +1 -2
- package/_cjs/data/Maybe/instances.cjs.map +1 -1
- package/_cjs/data/Newtype.cjs +1 -2
- package/_cjs/data/Newtype.cjs.map +1 -1
- package/_cjs/data/Ord/api.cjs +1 -2
- package/_cjs/data/Ord/api.cjs.map +1 -1
- package/_cjs/data/Ord/definition.cjs +1 -2
- package/_cjs/data/Ord/definition.cjs.map +1 -1
- package/_cjs/data/Ord/instances.cjs +1 -2
- package/_cjs/data/Ord/instances.cjs.map +1 -1
- package/_cjs/data/Predicate/definition.cjs +0 -4
- package/_cjs/data/Predicate/match.cjs +0 -4
- package/_cjs/data/Refinement/definition.cjs +0 -4
- package/_cjs/data/Showable/definition.cjs +1 -2
- package/_cjs/data/Showable/definition.cjs.map +1 -1
- package/_cjs/data/Showable/show.cjs +1 -2
- package/_cjs/data/Showable/show.cjs.map +1 -1
- package/_cjs/data/Showable/styles.cjs +1 -2
- package/_cjs/data/Showable/styles.cjs.map +1 -1
- package/_cjs/data/Showable/util.cjs +1 -2
- package/_cjs/data/Showable/util.cjs.map +1 -1
- package/_cjs/data/Struct/api.cjs +5 -7
- package/_cjs/data/Struct/api.cjs.map +1 -1
- package/_cjs/data/Struct/definition.cjs +1 -2
- package/_cjs/data/Struct/definition.cjs.map +1 -1
- package/_cjs/data/Tag/constructors.cjs +1 -2
- package/_cjs/data/Tag/constructors.cjs.map +1 -1
- package/_cjs/data/Tag/definition.cjs +1 -2
- package/_cjs/data/Tag/definition.cjs.map +1 -1
- package/_cjs/data/These/api.cjs +86 -87
- package/_cjs/data/These/api.cjs.map +1 -1
- package/_cjs/data/These/constructors.cjs +1 -2
- package/_cjs/data/These/constructors.cjs.map +1 -1
- package/_cjs/data/These/definition.cjs +1 -2
- package/_cjs/data/These/definition.cjs.map +1 -1
- package/_cjs/data/These/destructors.cjs +1 -2
- package/_cjs/data/These/destructors.cjs.map +1 -1
- package/_cjs/data/These/instances.cjs +1 -2
- package/_cjs/data/These/instances.cjs.map +1 -1
- package/_cjs/data/Trace/api.cjs +1 -2
- package/_cjs/data/Trace/api.cjs.map +1 -1
- package/_cjs/data/Trace/constructors.cjs +1 -2
- package/_cjs/data/Trace/constructors.cjs.map +1 -1
- package/_cjs/data/Zipped.cjs +1 -2
- package/_cjs/data/Zipped.cjs.map +1 -1
- package/_cjs/data/bigint/definition.cjs +0 -4
- package/_cjs/data/bigint/instances.cjs +1 -2
- package/_cjs/data/bigint/instances.cjs.map +1 -1
- package/_cjs/data/boolean/definition.cjs +0 -4
- package/_cjs/data/boolean/instances.cjs +1 -2
- package/_cjs/data/boolean/instances.cjs.map +1 -1
- package/_cjs/data/exceptions/IOError.cjs +1 -2
- package/_cjs/data/exceptions/IOError.cjs.map +1 -1
- package/_cjs/data/exceptions/InterruptedException.cjs +1 -2
- package/_cjs/data/exceptions/InterruptedException.cjs.map +1 -1
- package/_cjs/data/exceptions/RuntimeError.cjs +0 -4
- package/_cjs/data/function/definition.cjs +0 -4
- package/_cjs/data/number/definition.cjs +0 -4
- package/_cjs/data/number/instances.cjs +1 -2
- package/_cjs/data/number/instances.cjs.map +1 -1
- package/_cjs/data/object/definition.cjs +0 -4
- package/_cjs/data/object/instances.cjs +1 -2
- package/_cjs/data/object/instances.cjs.map +1 -1
- package/_cjs/data/string/api.cjs +1 -2
- package/_cjs/data/string/api.cjs.map +1 -1
- package/_cjs/data/string/definition.cjs +0 -4
- package/_cjs/data/string/instances.cjs +1 -2
- package/_cjs/data/string/instances.cjs.map +1 -1
- package/_cjs/data.cjs +0 -4
- package/_cjs/global.cjs +0 -4
- package/_cjs/index.cjs +0 -4
- package/_cjs/internal/Stack.cjs +7 -2
- package/_cjs/internal/Stack.cjs.map +1 -1
- package/_cjs/json.cjs +0 -4
- package/_cjs/optics/At/api.cjs +1 -2
- package/_cjs/optics/At/api.cjs.map +1 -1
- package/_cjs/optics/At/definition.cjs +1 -2
- package/_cjs/optics/At/definition.cjs.map +1 -1
- package/_cjs/optics/Index/api.cjs +3 -4
- package/_cjs/optics/Index/api.cjs.map +1 -1
- package/_cjs/optics/Iso/api.cjs +1 -2
- package/_cjs/optics/Iso/api.cjs.map +1 -1
- package/_cjs/optics/Iso/definition.cjs +1 -2
- package/_cjs/optics/Iso/definition.cjs.map +1 -1
- package/_cjs/optics/Lens/api.cjs +2 -3
- package/_cjs/optics/Lens/api.cjs.map +1 -1
- package/_cjs/optics/Lens/definition.cjs +1 -2
- package/_cjs/optics/Lens/definition.cjs.map +1 -1
- package/_cjs/optics/Optional/api/compose.cjs +1 -2
- package/_cjs/optics/Optional/api/compose.cjs.map +1 -1
- package/_cjs/optics/Optional/api/focus.cjs +1 -2
- package/_cjs/optics/Optional/api/focus.cjs.map +1 -1
- package/_cjs/optics/Optional/api.cjs +1 -2
- package/_cjs/optics/Optional/api.cjs.map +1 -1
- package/_cjs/optics/Optional/definition.cjs +1 -2
- package/_cjs/optics/Optional/definition.cjs.map +1 -1
- package/_cjs/optics/Prism/api/compose.cjs +1 -2
- package/_cjs/optics/Prism/api/compose.cjs.map +1 -1
- package/_cjs/optics/Prism/api/focus.cjs +1 -2
- package/_cjs/optics/Prism/api/focus.cjs.map +1 -1
- package/_cjs/optics/Prism/api/fromNullable.cjs +1 -2
- package/_cjs/optics/Prism/api/fromNullable.cjs.map +1 -1
- package/_cjs/optics/Prism/api/just.cjs +1 -2
- package/_cjs/optics/Prism/api/just.cjs.map +1 -1
- package/_cjs/optics/Prism/definition.cjs +1 -2
- package/_cjs/optics/Prism/definition.cjs.map +1 -1
- package/_cjs/optics/Traversal/api/compose.cjs +1 -2
- package/_cjs/optics/Traversal/api/compose.cjs.map +1 -1
- package/_cjs/optics/Traversal/api/focus.cjs +1 -2
- package/_cjs/optics/Traversal/api/focus.cjs.map +1 -1
- package/_cjs/optics/Traversal/api/fromTraversable.cjs +1 -2
- package/_cjs/optics/Traversal/api/fromTraversable.cjs.map +1 -1
- package/_cjs/optics/Traversal/definition.cjs +1 -2
- package/_cjs/optics/Traversal/definition.cjs.map +1 -1
- package/_cjs/optics.cjs +0 -4
- package/_cjs/typeclass/ApplicativeExcept.cjs +1 -2
- package/_cjs/typeclass/ApplicativeExcept.cjs.map +1 -1
- package/_cjs/typeclass/Apply.cjs +1 -14
- package/_cjs/typeclass/Apply.cjs.map +1 -1
- package/_cjs/typeclass/Chain.cjs +1 -2
- package/_cjs/typeclass/Chain.cjs.map +1 -1
- package/_cjs/typeclass/Fail.cjs +0 -4
- package/_cjs/typeclass/MonadExcept.cjs +1 -2
- package/_cjs/typeclass/MonadExcept.cjs.map +1 -1
- package/_cjs/typeclass/Monoid.cjs +1 -2
- package/_cjs/typeclass/Monoid.cjs.map +1 -1
- package/_cjs/typeclass/Nil.cjs +0 -4
- package/_cjs/typeclass/Semialign.cjs +1 -2
- package/_cjs/typeclass/Semialign.cjs.map +1 -1
- package/_cjs/typeclass/Semigroup/api.cjs +1 -2
- package/_cjs/typeclass/Semigroup/api.cjs.map +1 -1
- package/_cjs/typeclass/Semigroup/derivations.cjs +1 -2
- package/_cjs/typeclass/Semigroup/derivations.cjs.map +1 -1
- package/_cjs/typeclass/Witherable.cjs +1 -2
- package/_cjs/typeclass/Witherable.cjs.map +1 -1
- package/_cjs/typeclass/WitherableWithIndex.cjs +1 -2
- package/_cjs/typeclass/WitherableWithIndex.cjs.map +1 -1
- package/_cjs/typeclass/builtin/Symbol.cjs +0 -4
- package/_cjs/types/extractions.cjs +0 -4
- package/_cjs/types/utility.cjs +0 -4
- package/_cjs/util/AnsiFormat.cjs +1 -2
- package/_cjs/util/AnsiFormat.cjs.map +1 -1
- package/_cjs/util/assert.cjs +1 -1
- package/_cjs/util/assert.cjs.map +1 -1
- package/_cjs/util/pattern.cjs.map +1 -1
- package/_cjs/util/rand/distribution/Distribution.cjs +0 -4
- package/_cjs/util/rand/generator/RandomGenerator.cjs.map +1 -1
- package/_cjs/util.cjs +0 -4
- package/_mjs/collection/AsyncIterable/api.mjs +366 -0
- package/_mjs/collection/AsyncIterable/api.mjs.map +1 -0
- package/_mjs/collection/AsyncIterable/definition.mjs +2 -0
- package/_mjs/collection/AsyncIterable/definition.mjs.map +1 -0
- package/_mjs/collection/AsyncIterable.mjs +4 -0
- package/_mjs/collection/AsyncIterable.mjs.map +1 -0
- package/_mjs/collection/Iterable/api.mjs +175 -134
- package/_mjs/collection/Iterable/api.mjs.map +1 -1
- package/_mjs/collection/Iterable/constructors.mjs.map +1 -1
- package/_mjs/collection/compat/ArrayLike/definition.mjs +1 -1
- package/_mjs/collection/compat/Map/definition.mjs +1 -1
- package/_mjs/collection/compat/Set/definition.mjs +1 -1
- package/_mjs/collection/compat.mjs +1 -1
- package/_mjs/collection/immutable/Conc/constructors.mjs +2 -2
- package/_mjs/collection/immutable/Conc/constructors.mjs.map +1 -1
- package/_mjs/collection/immutable/Conc/definition.mjs +1 -1
- package/_mjs/collection/immutable/Conc/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/List/api.mjs +2 -2
- package/_mjs/collection/immutable/List/api.mjs.map +1 -1
- package/_mjs/collection/immutable/{ImmutableArray → ReadonlyArray}/api/chunksOf.mjs +3 -3
- package/_mjs/collection/immutable/ReadonlyArray/api/chunksOf.mjs.map +1 -0
- package/_mjs/collection/immutable/ReadonlyArray/api/splitAt.mjs +9 -0
- package/_mjs/collection/immutable/ReadonlyArray/api/splitAt.mjs.map +1 -0
- package/_mjs/collection/immutable/ReadonlyArray/api/splitWhere.mjs +19 -0
- package/_mjs/collection/immutable/ReadonlyArray/api/splitWhere.mjs.map +1 -0
- package/_mjs/collection/immutable/ReadonlyArray/api.mjs +1302 -0
- package/_mjs/collection/immutable/ReadonlyArray/api.mjs.map +1 -0
- package/_mjs/collection/immutable/ReadonlyArray/constructors.mjs +44 -0
- package/_mjs/collection/immutable/ReadonlyArray/constructors.mjs.map +1 -0
- package/_mjs/collection/immutable/ReadonlyArray/definition.mjs.map +1 -0
- package/_mjs/collection/immutable/{ImmutableArray → ReadonlyArray}/instances.mjs +4 -5
- package/_mjs/collection/immutable/ReadonlyArray/instances.mjs.map +1 -0
- package/_mjs/collection/immutable/ReadonlyArray.mjs +11 -0
- package/_mjs/collection/immutable/ReadonlyArray.mjs.map +1 -0
- package/_mjs/collection/immutable/ReadonlyNonEmptyArray/api.mjs +433 -0
- package/_mjs/collection/immutable/ReadonlyNonEmptyArray/api.mjs.map +1 -0
- package/_mjs/collection/immutable/{ImmutableNonEmptyArray → ReadonlyNonEmptyArray}/constructors.mjs +16 -15
- package/_mjs/collection/immutable/ReadonlyNonEmptyArray/constructors.mjs.map +1 -0
- package/_mjs/collection/immutable/ReadonlyNonEmptyArray/definition.mjs +2 -0
- package/_mjs/collection/immutable/ReadonlyNonEmptyArray/definition.mjs.map +1 -0
- package/_mjs/collection/immutable/ReadonlyNonEmptyArray/destructors.mjs +41 -0
- package/_mjs/collection/immutable/ReadonlyNonEmptyArray/destructors.mjs.map +1 -0
- package/_mjs/collection/immutable/{ImmutableNonEmptyArray → ReadonlyNonEmptyArray}/instances.mjs +2 -2
- package/_mjs/collection/immutable/ReadonlyNonEmptyArray/instances.mjs.map +1 -0
- package/_mjs/collection/immutable/ReadonlyNonEmptyArray.mjs +7 -0
- package/_mjs/collection/immutable/ReadonlyNonEmptyArray.mjs.map +1 -0
- package/_mjs/collection/immutable/Vector/api.mjs +224 -224
- package/_mjs/collection/immutable/Vector/api.mjs.map +1 -1
- package/_mjs/collection/immutable.mjs +1 -1
- package/_mjs/collection/internal.mjs +1 -1
- package/_mjs/collection/mutable.mjs +1 -1
- package/_mjs/collection/weak.mjs +1 -1
- package/_mjs/collection.mjs +1 -1
- package/_mjs/control/Eval/api.mjs +83 -15
- package/_mjs/control/Eval/api.mjs.map +1 -1
- package/_mjs/control/Eval/constructors.mjs +4 -0
- package/_mjs/control/Eval/constructors.mjs.map +1 -1
- package/_mjs/control/Pure/runtime.mjs +14 -8
- package/_mjs/control/Pure/runtime.mjs.map +1 -1
- package/_mjs/control.mjs +1 -1
- package/_mjs/data/Byte.mjs +1 -1
- package/_mjs/data/CaseClass.mjs +10 -12
- package/_mjs/data/CaseClass.mjs.map +1 -1
- package/_mjs/data/Cause/api/fold.mjs +32 -32
- package/_mjs/data/Cause/api/fold.mjs.map +1 -1
- package/_mjs/data/Const/api.mjs +7 -7
- package/_mjs/data/Const/api.mjs.map +1 -1
- package/_mjs/data/Const/instances.mjs +11 -11
- package/_mjs/data/Const/instances.mjs.map +1 -1
- package/_mjs/data/Date/definition.mjs +1 -1
- package/_mjs/data/Datum/api.mjs +107 -108
- package/_mjs/data/Datum/api.mjs.map +1 -1
- package/_mjs/data/Datum.mjs +5 -0
- package/_mjs/data/Datum.mjs.map +1 -0
- package/_mjs/data/DatumEither/api.mjs +53 -53
- package/_mjs/data/DatumEither/api.mjs.map +1 -1
- package/_mjs/data/Either/api.mjs +42 -42
- package/_mjs/data/Either/api.mjs.map +1 -1
- package/_mjs/data/Either/constructors.mjs +20 -20
- package/_mjs/data/Either/constructors.mjs.map +1 -1
- package/_mjs/data/EitherT/api.mjs +27 -27
- package/_mjs/data/EitherT/api.mjs.map +1 -1
- package/_mjs/data/Environment/api.mjs.map +1 -1
- package/_mjs/data/EnvironmentPatch.mjs +1 -1
- package/_mjs/data/Eq/api.mjs +175 -3
- package/_mjs/data/Eq/api.mjs.map +1 -1
- package/_mjs/data/Eq/derivations.mjs +8 -19
- package/_mjs/data/Eq/derivations.mjs.map +1 -1
- package/_mjs/data/Exit/api.mjs +88 -78
- package/_mjs/data/Exit/api.mjs.map +1 -1
- package/_mjs/data/Guard/api.mjs +12 -15
- package/_mjs/data/Guard/api.mjs.map +1 -1
- package/_mjs/data/Maybe/api.mjs +71 -58
- package/_mjs/data/Maybe/api.mjs.map +1 -1
- package/_mjs/data/Maybe/constructors.mjs +36 -36
- package/_mjs/data/Maybe/constructors.mjs.map +1 -1
- package/_mjs/data/Predicate/definition.mjs +1 -1
- package/_mjs/data/Predicate/match.mjs +1 -1
- package/_mjs/data/Refinement/definition.mjs +1 -1
- package/_mjs/data/Showable/util.mjs.map +1 -1
- package/_mjs/data/Struct/api.mjs +4 -5
- package/_mjs/data/Struct/api.mjs.map +1 -1
- package/_mjs/data/These/api.mjs +85 -85
- package/_mjs/data/These/api.mjs.map +1 -1
- package/_mjs/data/bigint/definition.mjs +1 -1
- package/_mjs/data/boolean/definition.mjs +1 -1
- package/_mjs/data/exceptions/RuntimeError.mjs +1 -1
- package/_mjs/data/function/definition.mjs +1 -1
- package/_mjs/data/number/definition.mjs +1 -1
- package/_mjs/data/object/definition.mjs +1 -1
- package/_mjs/data/string/definition.mjs +1 -1
- package/_mjs/data.mjs +1 -1
- package/_mjs/global.mjs +1 -1
- package/_mjs/index.mjs +1 -1
- package/_mjs/internal/Stack.mjs +7 -2
- package/_mjs/internal/Stack.mjs.map +1 -1
- package/_mjs/json.mjs +1 -1
- package/_mjs/optics/Index/api.mjs +2 -2
- package/_mjs/optics/Index/api.mjs.map +1 -1
- package/_mjs/optics/Lens/api.mjs +1 -1
- package/_mjs/optics.mjs +1 -1
- package/_mjs/typeclass/Apply.mjs +0 -12
- package/_mjs/typeclass/Apply.mjs.map +1 -1
- package/_mjs/typeclass/Fail.mjs +1 -1
- package/_mjs/typeclass/Nil.mjs +1 -1
- package/_mjs/typeclass/builtin/Symbol.mjs +1 -1
- package/_mjs/types/extractions.mjs +1 -1
- package/_mjs/types/utility.mjs +1 -1
- package/_mjs/util/assert.mjs +1 -1
- package/_mjs/util/assert.mjs.map +1 -1
- package/_mjs/util/pattern.mjs.map +1 -1
- package/_mjs/util/rand/distribution/Distribution.mjs +1 -1
- package/_mjs/util/rand/generator/RandomGenerator.mjs.map +1 -1
- package/_mjs/util.mjs +1 -1
- package/_src/collection/AsyncIterable/api.ts +369 -0
- package/_src/collection/AsyncIterable/definition.ts +7 -0
- package/_src/collection/AsyncIterable.ts +4 -0
- package/_src/collection/Iterable/api.ts +215 -162
- package/_src/collection/Iterable/constructors.ts +0 -2
- package/_src/collection/compat/ArrayLike/definition.ts +2 -2
- package/_src/collection/compat.ts +0 -1
- package/_src/collection/immutable/Conc/constructors.ts +1 -2
- package/_src/collection/immutable/Conc/definition.ts +7 -6
- package/_src/collection/immutable/List/api.ts +2 -2
- package/_src/collection/immutable/ReadonlyArray/api/chunksOf.ts +8 -0
- package/_src/collection/immutable/ReadonlyArray/api/splitAt.ts +8 -0
- package/_src/collection/immutable/{ImmutableArray → ReadonlyArray}/api/splitWhere.ts +3 -3
- package/_src/collection/immutable/ReadonlyArray/api.ts +1536 -0
- package/_src/collection/immutable/ReadonlyArray/constructors.ts +47 -0
- package/_src/collection/{compat/Array → immutable/ReadonlyArray}/definition.ts +8 -0
- package/_src/collection/immutable/{ImmutableArray → ReadonlyArray}/instances.ts +22 -22
- package/_src/collection/immutable/ReadonlyArray.ts +12 -0
- package/_src/collection/immutable/ReadonlyNonEmptyArray/api.ts +481 -0
- package/_src/collection/immutable/ReadonlyNonEmptyArray/constructors.ts +76 -0
- package/_src/collection/immutable/ReadonlyNonEmptyArray/definition.ts +22 -0
- package/_src/collection/immutable/ReadonlyNonEmptyArray/destructors.ts +41 -0
- package/_src/collection/immutable/{ImmutableNonEmptyArray → ReadonlyNonEmptyArray}/instances.ts +13 -13
- package/_src/collection/immutable/ReadonlyNonEmptyArray.ts +7 -0
- package/_src/collection/immutable/Vector/api.ts +310 -309
- package/_src/collection/immutable.ts +11 -11
- package/_src/collection.ts +6 -5
- package/_src/control/Eval/api.ts +109 -16
- package/_src/control/Eval/constructors.ts +5 -0
- package/_src/control/Pure/runtime.ts +8 -2
- package/_src/data/CaseClass.ts +5 -5
- package/_src/data/Cause/api/fold.ts +2 -2
- package/_src/data/Const/api.ts +8 -8
- package/_src/data/Const/instances.ts +10 -10
- package/_src/data/Datum/api.ts +113 -113
- package/_src/data/Datum.ts +5 -0
- package/_src/data/DatumEither/api.ts +41 -43
- package/_src/data/Either/api.ts +47 -47
- package/_src/data/Either/constructors.ts +14 -16
- package/_src/data/EitherT/api.ts +111 -110
- package/_src/data/Environment/api.ts +6 -3
- package/_src/data/Eq/api.ts +193 -4
- package/_src/data/Eq/derivations.ts +12 -19
- package/_src/data/Exit/api.ts +89 -77
- package/_src/data/Guard/api.ts +11 -11
- package/_src/data/Maybe/api.ts +82 -73
- package/_src/data/Maybe/constructors.ts +34 -36
- package/_src/data/Showable/util.ts +1 -1
- package/_src/data/Struct/api.ts +1 -1
- package/_src/data/These/api.ts +93 -92
- package/_src/data.ts +1 -0
- package/_src/global.ts +7 -12
- package/_src/internal/Stack.ts +6 -2
- package/_src/optics/Index/api.ts +1 -1
- package/_src/typeclass/Apply.ts +6 -18
- package/_src/util/assert.ts +2 -2
- package/_src/util/pattern.ts +8 -90
- package/_src/util/rand/generator/RandomGenerator.ts +1 -0
- package/collection/AsyncIterable/api.d.ts +71 -0
- package/collection/AsyncIterable/definition.d.ts +9 -0
- package/collection/AsyncIterable.d.ts +2 -0
- package/collection/Iterable/api/traverseConc.d.ts +1 -1
- package/collection/Iterable/api.d.ts +40 -25
- package/collection/compat/ArrayLike/definition.d.ts +2 -2
- package/collection/compat.d.ts +0 -1
- package/collection/immutable/Conc/definition.d.ts +1 -1
- package/collection/immutable/ReadonlyArray/api/chunksOf.d.ts +5 -0
- package/collection/immutable/ReadonlyArray/api/splitAt.d.ts +5 -0
- package/collection/immutable/ReadonlyArray/api/splitWhere.d.ts +6 -0
- package/collection/immutable/ReadonlyArray/api.d.ts +614 -0
- package/collection/immutable/ReadonlyArray/constructors.d.ts +30 -0
- package/collection/{compat/Array → immutable/ReadonlyArray}/definition.d.ts +8 -0
- package/collection/immutable/ReadonlyArray/instances.d.ts +87 -0
- package/collection/immutable/ReadonlyArray.d.ts +7 -0
- package/collection/immutable/ReadonlyNonEmptyArray/api.d.ts +186 -0
- package/collection/immutable/ReadonlyNonEmptyArray/constructors.d.ts +45 -0
- package/collection/immutable/ReadonlyNonEmptyArray/definition.d.ts +21 -0
- package/collection/immutable/ReadonlyNonEmptyArray/destructors.d.ts +31 -0
- package/collection/immutable/ReadonlyNonEmptyArray/instances.d.ts +52 -0
- package/collection/immutable/ReadonlyNonEmptyArray.d.ts +5 -0
- package/collection/immutable/Vector/api.d.ts +93 -93
- package/collection/immutable.d.ts +2 -2
- package/collection.d.ts +1 -0
- package/control/Eval/api.d.ts +27 -5
- package/control/Eval/constructors.d.ts +5 -0
- package/data/CaseClass.d.ts +2 -3
- package/data/Const/api.d.ts +5 -5
- package/data/Const/instances.d.ts +4 -4
- package/data/Datum/api.d.ts +64 -64
- package/data/Datum.d.ts +3 -0
- package/data/DatumEither/api.d.ts +25 -25
- package/data/Either/api.d.ts +24 -24
- package/data/Either/constructors.d.ts +12 -12
- package/data/EitherT/api.d.ts +16 -16
- package/data/Environment/api.d.ts +4 -2
- package/data/Eq/api.d.ts +89 -2
- package/data/Eq/derivations.d.ts +7 -0
- package/data/Exit/api.d.ts +43 -37
- package/data/Guard/api.d.ts +7 -8
- package/data/Maybe/api.d.ts +38 -33
- package/data/Maybe/constructors.d.ts +16 -16
- package/data/Showable/util.d.ts +1 -1
- package/data/These/api.d.ts +26 -26
- package/data.d.ts +1 -0
- package/global.d.ts +4 -8
- package/internal/Stack.d.ts +2 -0
- package/optics/Lens/api.d.ts +1 -1
- package/optics/Traversal/api/fromTraversable.d.ts +1 -1
- package/package.json +3 -3
- package/typeclass/Apply.d.ts +0 -6
- package/util/assert.d.ts +1 -1
- package/_cjs/collection/compat/Array/api.cjs +0 -142
- package/_cjs/collection/compat/Array/api.cjs.map +0 -1
- package/_cjs/collection/compat/Array/definition.cjs.map +0 -1
- package/_cjs/collection/compat/Array.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableArray/api/chunksOf.cjs +0 -19
- package/_cjs/collection/immutable/ImmutableArray/api/chunksOf.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableArray/api/slice.cjs +0 -18
- package/_cjs/collection/immutable/ImmutableArray/api/slice.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableArray/api/splitAt.cjs +0 -18
- package/_cjs/collection/immutable/ImmutableArray/api/splitAt.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableArray/api/splitWhere.cjs +0 -28
- package/_cjs/collection/immutable/ImmutableArray/api/splitWhere.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableArray/api.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableArray/constructors.cjs +0 -59
- package/_cjs/collection/immutable/ImmutableArray/constructors.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableArray/definition.cjs +0 -44
- package/_cjs/collection/immutable/ImmutableArray/definition.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableArray/instances.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableArray.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs +0 -474
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/constructors.cjs +0 -79
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/constructors.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs +0 -36
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/destructors.cjs +0 -53
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/destructors.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs.map +0 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray.cjs.map +0 -1
- package/_cjs/control/Eval/api/sequenceArray.cjs +0 -17
- package/_cjs/control/Eval/api/sequenceArray.cjs.map +0 -1
- package/_mjs/collection/compat/Array/api.mjs +0 -125
- package/_mjs/collection/compat/Array/api.mjs.map +0 -1
- package/_mjs/collection/compat/Array/definition.mjs.map +0 -1
- package/_mjs/collection/compat/Array.mjs +0 -4
- package/_mjs/collection/compat/Array.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableArray/api/chunksOf.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableArray/api/slice.mjs +0 -10
- package/_mjs/collection/immutable/ImmutableArray/api/slice.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableArray/api/splitAt.mjs +0 -10
- package/_mjs/collection/immutable/ImmutableArray/api/splitAt.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableArray/api/splitWhere.mjs +0 -20
- package/_mjs/collection/immutable/ImmutableArray/api/splitWhere.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableArray/api.mjs +0 -1284
- package/_mjs/collection/immutable/ImmutableArray/api.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableArray/constructors.mjs +0 -46
- package/_mjs/collection/immutable/ImmutableArray/constructors.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableArray/definition.mjs +0 -35
- package/_mjs/collection/immutable/ImmutableArray/definition.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableArray/instances.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableArray.mjs +0 -12
- package/_mjs/collection/immutable/ImmutableArray.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs +0 -437
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/constructors.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs +0 -25
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/destructors.mjs +0 -43
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/destructors.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs.map +0 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray.mjs +0 -7
- package/_mjs/collection/immutable/ImmutableNonEmptyArray.mjs.map +0 -1
- package/_mjs/control/Eval/api/sequenceArray.mjs +0 -9
- package/_mjs/control/Eval/api/sequenceArray.mjs.map +0 -1
- package/_src/collection/compat/Array/api.ts +0 -134
- package/_src/collection/compat/Array.ts +0 -4
- package/_src/collection/immutable/ImmutableArray/api/chunksOf.ts +0 -8
- package/_src/collection/immutable/ImmutableArray/api/slice.ts +0 -8
- package/_src/collection/immutable/ImmutableArray/api/splitAt.ts +0 -8
- package/_src/collection/immutable/ImmutableArray/api.ts +0 -1526
- package/_src/collection/immutable/ImmutableArray/constructors.ts +0 -47
- package/_src/collection/immutable/ImmutableArray/definition.ts +0 -48
- package/_src/collection/immutable/ImmutableArray.ts +0 -13
- package/_src/collection/immutable/ImmutableNonEmptyArray/api.ts +0 -483
- package/_src/collection/immutable/ImmutableNonEmptyArray/constructors.ts +0 -83
- package/_src/collection/immutable/ImmutableNonEmptyArray/definition.ts +0 -47
- package/_src/collection/immutable/ImmutableNonEmptyArray/destructors.ts +0 -41
- package/_src/collection/immutable/ImmutableNonEmptyArray.ts +0 -7
- package/_src/control/Eval/api/sequenceArray.ts +0 -6
- package/collection/compat/Array/api.d.ts +0 -62
- package/collection/compat/Array.d.ts +0 -2
- package/collection/immutable/ImmutableArray/api/chunksOf.d.ts +0 -6
- package/collection/immutable/ImmutableArray/api/slice.d.ts +0 -6
- package/collection/immutable/ImmutableArray/api/splitAt.d.ts +0 -6
- package/collection/immutable/ImmutableArray/api/splitWhere.d.ts +0 -7
- package/collection/immutable/ImmutableArray/api.d.ts +0 -602
- package/collection/immutable/ImmutableArray/constructors.d.ts +0 -32
- package/collection/immutable/ImmutableArray/definition.d.ts +0 -34
- package/collection/immutable/ImmutableArray/instances.d.ts +0 -87
- package/collection/immutable/ImmutableArray.d.ts +0 -8
- package/collection/immutable/ImmutableNonEmptyArray/api.d.ts +0 -186
- package/collection/immutable/ImmutableNonEmptyArray/constructors.d.ts +0 -46
- package/collection/immutable/ImmutableNonEmptyArray/definition.d.ts +0 -40
- package/collection/immutable/ImmutableNonEmptyArray/destructors.d.ts +0 -32
- package/collection/immutable/ImmutableNonEmptyArray/instances.d.ts +0 -52
- package/collection/immutable/ImmutableNonEmptyArray.d.ts +0 -5
- package/control/Eval/api/sequenceArray.d.ts +0 -6
- /package/_cjs/collection/{compat/Array → immutable/ReadonlyArray}/definition.cjs +0 -0
- /package/_mjs/collection/{compat/Array → immutable/ReadonlyArray}/definition.mjs +0 -0
@@ -0,0 +1,1536 @@
|
|
1
|
+
import type { ReadonlyArrayF } from "@fncts/base/collection/immutable/ReadonlyArray/definition";
|
2
|
+
import type { Monoid } from "@fncts/base/typeclass";
|
3
|
+
|
4
|
+
import { EitherTag } from "@fncts/base/data/Either";
|
5
|
+
import { identity, pipe, tuple } from "@fncts/base/data/function";
|
6
|
+
import * as P from "@fncts/base/typeclass";
|
7
|
+
|
8
|
+
/**
|
9
|
+
* @tsplus pipeable fncts.ReadonlyArray align
|
10
|
+
*/
|
11
|
+
export function align<B>(fb: ReadonlyArray<B>) {
|
12
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<These<A, B>> => {
|
13
|
+
return self.alignWith(fb, identity);
|
14
|
+
};
|
15
|
+
}
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @tsplus pipeable fncts.ReadonlyArray alignWith
|
19
|
+
*/
|
20
|
+
export function alignWith<A, B, C>(fb: ReadonlyArray<B>, f: (_: These<A, B>) => C) {
|
21
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<C> => {
|
22
|
+
const selfArray = self;
|
23
|
+
const thatArray = fb;
|
24
|
+
const minlen = Math.min(selfArray.length, thatArray.length);
|
25
|
+
const maxlen = Math.max(selfArray.length, thatArray.length);
|
26
|
+
const ret = Array<C>(maxlen);
|
27
|
+
for (let i = 0; i < minlen; i++) {
|
28
|
+
ret[i] = f(These.both(selfArray[i]!, thatArray[i]!));
|
29
|
+
}
|
30
|
+
if (minlen === maxlen) {
|
31
|
+
return ret;
|
32
|
+
} else if (selfArray.length > thatArray.length) {
|
33
|
+
for (let i = minlen; i < maxlen; i++) {
|
34
|
+
ret[i] = f(These.left(selfArray[i]!));
|
35
|
+
}
|
36
|
+
} else {
|
37
|
+
for (let i = minlen; i < maxlen; i++) {
|
38
|
+
ret[i] = f(These.right(thatArray[i]!));
|
39
|
+
}
|
40
|
+
}
|
41
|
+
return ret;
|
42
|
+
};
|
43
|
+
}
|
44
|
+
|
45
|
+
/**
|
46
|
+
* @tsplus pipeable fncts.ReadonlyArray alt
|
47
|
+
*/
|
48
|
+
export function alt<B>(that: Lazy<ReadonlyArray<B>>) {
|
49
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<A | B> => {
|
50
|
+
return (<ReadonlyArray<A | B>>self).concat(that());
|
51
|
+
};
|
52
|
+
}
|
53
|
+
|
54
|
+
/**
|
55
|
+
* @tsplus pipeable fncts.ReadonlyArray ap
|
56
|
+
*/
|
57
|
+
export function ap<A>(fa: ReadonlyArray<A>) {
|
58
|
+
return <B>(self: ReadonlyArray<(a: A) => B>): ReadonlyArray<B> => {
|
59
|
+
return self.flatMap((f) => fa.map(f));
|
60
|
+
};
|
61
|
+
}
|
62
|
+
|
63
|
+
/**
|
64
|
+
* @tsplus pipeable fncts.ReadonlyArray append
|
65
|
+
*/
|
66
|
+
export function append<B>(last: B) {
|
67
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<A | B> => {
|
68
|
+
const selfArray = self;
|
69
|
+
const len = selfArray.length;
|
70
|
+
const r = Array<A | B>(len + 1);
|
71
|
+
r[len] = last;
|
72
|
+
for (let i = 0; i < len; i++) {
|
73
|
+
r[i] = selfArray[i]!;
|
74
|
+
}
|
75
|
+
return r;
|
76
|
+
};
|
77
|
+
}
|
78
|
+
|
79
|
+
/**
|
80
|
+
* @tsplus static fncts.ReadonlyArrayOps chainRecBreadthFirst
|
81
|
+
*/
|
82
|
+
export function chainRecBreadthFirst<A, B>(a: A, f: (a: A) => ReadonlyArray<Either<A, B>>): ReadonlyArray<B> {
|
83
|
+
const initial = f(a);
|
84
|
+
const buffer: Array<Either<A, B>> = [];
|
85
|
+
const out: Array<B> = [];
|
86
|
+
|
87
|
+
function go(e: Either<A, B>): void {
|
88
|
+
Either.concrete(e);
|
89
|
+
if (e._tag === "Left") {
|
90
|
+
f(e.left).forEach((v) => buffer.push(v));
|
91
|
+
} else {
|
92
|
+
out.push(e.right);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
for (const e of initial) {
|
97
|
+
go(e);
|
98
|
+
}
|
99
|
+
|
100
|
+
while (buffer.length > 0) {
|
101
|
+
go(buffer.shift()!);
|
102
|
+
}
|
103
|
+
|
104
|
+
return out;
|
105
|
+
}
|
106
|
+
|
107
|
+
/**
|
108
|
+
* @tsplus static fncts.ReadonlyArrayOps chainRecDepthFirst
|
109
|
+
*/
|
110
|
+
export function chainRecDepthFirst<A, B>(a: A, f: (a: A) => ReadonlyArray<Either<A, B>>): ReadonlyArray<B> {
|
111
|
+
const buffer = f(a).slice();
|
112
|
+
const out: B[] = [];
|
113
|
+
|
114
|
+
while (buffer.length > 0) {
|
115
|
+
const e = buffer.shift()!;
|
116
|
+
Either.concrete(e);
|
117
|
+
if (e._tag === EitherTag.Left) {
|
118
|
+
buffer.unshift(...f(e.left));
|
119
|
+
} else {
|
120
|
+
out.push(e.right);
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
return out;
|
125
|
+
}
|
126
|
+
|
127
|
+
/**
|
128
|
+
* A useful recursion pattern for processing a `Array` to produce a new `Array`,
|
129
|
+
* often used for "chopping" up the input `Array`. Typically chop is called with some function
|
130
|
+
* that will consume an initial prefix of the `Array` and produce a value and the rest of the `Array`.
|
131
|
+
*
|
132
|
+
* @tsplus pipeable fncts.ReadonlyArray chop
|
133
|
+
*/
|
134
|
+
export function chop<A, B>(f: (as: ReadonlyNonEmptyArray<A>) => readonly [B, ReadonlyArray<A>]) {
|
135
|
+
return (as: ReadonlyArray<A>): ReadonlyArray<B> => {
|
136
|
+
const result: Array<B> = [];
|
137
|
+
let cs: ReadonlyArray<A> = as;
|
138
|
+
while (cs.isNonEmpty()) {
|
139
|
+
const [b, c] = f(cs);
|
140
|
+
result.push(b);
|
141
|
+
cs = c;
|
142
|
+
}
|
143
|
+
return result;
|
144
|
+
};
|
145
|
+
}
|
146
|
+
|
147
|
+
/**
|
148
|
+
* @tsplus pipeable fncts.ReadonlyArray collectWhile
|
149
|
+
*/
|
150
|
+
export function collectWhile<A, B>(f: (a: A) => Maybe<B>) {
|
151
|
+
return (as: ReadonlyArray<A>): ReadonlyArray<B> => {
|
152
|
+
const result: Array<B> = [];
|
153
|
+
for (let i = 0; i < as.length; i++) {
|
154
|
+
const o = f(as[i]!);
|
155
|
+
if (o.isJust()) {
|
156
|
+
result.push(o.value);
|
157
|
+
} else {
|
158
|
+
break;
|
159
|
+
}
|
160
|
+
}
|
161
|
+
return result;
|
162
|
+
};
|
163
|
+
}
|
164
|
+
|
165
|
+
/**
|
166
|
+
* @tsplus static fncts.ReadonlyArrayOps comprehension
|
167
|
+
*/
|
168
|
+
export function comprehension<A, B, C, D, R>(
|
169
|
+
input: [ReadonlyArray<A>, ReadonlyArray<B>, ReadonlyArray<C>, ReadonlyArray<D>],
|
170
|
+
f: (a: A, b: B, c: C, d: D) => R,
|
171
|
+
g?: (a: A, b: B, c: C, d: D) => boolean,
|
172
|
+
): ReadonlyArray<R>;
|
173
|
+
export function comprehension<A, B, C, R>(
|
174
|
+
input: [ReadonlyArray<A>, ReadonlyArray<B>, ReadonlyArray<C>],
|
175
|
+
f: (a: A, b: B, c: C) => R,
|
176
|
+
g?: (a: A, b: B, c: C) => boolean,
|
177
|
+
): ReadonlyArray<R>;
|
178
|
+
export function comprehension<A, B, R>(
|
179
|
+
input: [ReadonlyArray<A>, ReadonlyArray<B>],
|
180
|
+
f: (a: A, b: B) => R,
|
181
|
+
g?: (a: A, b: B) => boolean,
|
182
|
+
): ReadonlyArray<R>;
|
183
|
+
export function comprehension<A, R>(input: [ReadonlyArray<A>], f: (a: A) => R, g?: (a: A) => boolean): ReadonlyArray<R>;
|
184
|
+
export function comprehension<A, R>(
|
185
|
+
input: ReadonlyArray<ReadonlyArray<A>>,
|
186
|
+
f: (...xs: ReadonlyArray<A>) => R,
|
187
|
+
g: (...xs: ReadonlyArray<A>) => boolean = () => true,
|
188
|
+
): ReadonlyArray<R> {
|
189
|
+
return Eval.run(comprehensionLoop([], input, f, g));
|
190
|
+
}
|
191
|
+
|
192
|
+
function comprehensionLoop<A, R>(
|
193
|
+
scope: ReadonlyArray<A>,
|
194
|
+
input: ReadonlyArray<ReadonlyArray<A>>,
|
195
|
+
f: (...xs: ReadonlyArray<A>) => R,
|
196
|
+
g: (...xs: ReadonlyArray<A>) => boolean,
|
197
|
+
): Eval<ReadonlyArray<R>> {
|
198
|
+
if (input.length === 0) {
|
199
|
+
return g(...scope) ? Eval.now([f(...scope)]) : Eval.now([]);
|
200
|
+
} else {
|
201
|
+
return input[0]!
|
202
|
+
.traverse(Eval.Applicative)((a) => comprehensionLoop(scope.append(a), input.slice(1), f, g))
|
203
|
+
.map((rs) => rs.flatten);
|
204
|
+
}
|
205
|
+
}
|
206
|
+
|
207
|
+
/**
|
208
|
+
* @tsplus pipeable fncts.ReadonlyArray concat
|
209
|
+
* @tsplus pipeable-operator fncts.ReadonlyArray +
|
210
|
+
*/
|
211
|
+
export function concat<B>(that: ReadonlyArray<B>) {
|
212
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<A | B> => {
|
213
|
+
const lenx = self.length;
|
214
|
+
if (lenx === 0) {
|
215
|
+
return that;
|
216
|
+
}
|
217
|
+
const leny = that.length;
|
218
|
+
if (leny === 0) {
|
219
|
+
return self;
|
220
|
+
}
|
221
|
+
const r = Array<A | B>(lenx + leny);
|
222
|
+
for (let i = 0; i < lenx; i++) {
|
223
|
+
r[i] = self[i]!;
|
224
|
+
}
|
225
|
+
for (let i = 0; i < leny; i++) {
|
226
|
+
r[i + lenx] = that[i]!;
|
227
|
+
}
|
228
|
+
return r;
|
229
|
+
};
|
230
|
+
}
|
231
|
+
|
232
|
+
/**
|
233
|
+
* @tsplus pipeable fncts.ReadonlyArray cross
|
234
|
+
*/
|
235
|
+
export function cross<B>(fb: ReadonlyArray<B>) {
|
236
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<Zipped.Make<A, B>> => {
|
237
|
+
return self.crossWith(fb, (a, b) => Zipped(a, b));
|
238
|
+
};
|
239
|
+
}
|
240
|
+
|
241
|
+
/**
|
242
|
+
* @tsplus pipeable fncts.ReadonlyArray crossWith
|
243
|
+
*/
|
244
|
+
export function crossWith<A, B, C>(fb: ReadonlyArray<B>, f: (a: A, b: B) => C) {
|
245
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<C> => {
|
246
|
+
return self.flatMap((a) => fb.map((b) => f(a, b)));
|
247
|
+
};
|
248
|
+
}
|
249
|
+
|
250
|
+
/**
|
251
|
+
* @tsplus pipeable fncts.ReadonlyArray deleteAt
|
252
|
+
*/
|
253
|
+
export function deleteAt(i: number) {
|
254
|
+
return <A>(as: ReadonlyArray<A>): Maybe<ReadonlyArray<A>> => {
|
255
|
+
return as.isOutOfBound(i) ? Nothing() : Just(as.unsafeDeleteAt(i));
|
256
|
+
};
|
257
|
+
}
|
258
|
+
|
259
|
+
/**
|
260
|
+
* @tsplus pipeable fncts.ReadonlyArray difference
|
261
|
+
*/
|
262
|
+
export function difference<A>(ys: ReadonlyArray<A>, /** @tsplus auto */ E: P.Eq<A>) {
|
263
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
264
|
+
return self.filter((a) => !ys.elem(a, E));
|
265
|
+
};
|
266
|
+
}
|
267
|
+
/**
|
268
|
+
* @tsplus pipeable fncts.ReadonlyArray drop
|
269
|
+
*/
|
270
|
+
export function drop(n: number) {
|
271
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
272
|
+
return self.slice(n);
|
273
|
+
};
|
274
|
+
}
|
275
|
+
|
276
|
+
/**
|
277
|
+
* @tsplus pipeable fncts.ReadonlyArray dropLast
|
278
|
+
*/
|
279
|
+
export function dropLast(n: number) {
|
280
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
281
|
+
return self.slice(0, self.length - n);
|
282
|
+
};
|
283
|
+
}
|
284
|
+
|
285
|
+
/**
|
286
|
+
* @tsplus pipeable fncts.ReadonlyArray dropLastWhile
|
287
|
+
*/
|
288
|
+
export function dropLastWhile<A>(p: Predicate<A>) {
|
289
|
+
return (as: ReadonlyArray<A>): ReadonlyArray<A> => {
|
290
|
+
return as.slice(0, as.spanIndexRight(p) + 1);
|
291
|
+
};
|
292
|
+
}
|
293
|
+
|
294
|
+
/**
|
295
|
+
* @tsplus pipeable fncts.ReadonlyArray dropWhile
|
296
|
+
*/
|
297
|
+
export function dropWhile<A>(p: Predicate<A>) {
|
298
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
299
|
+
return self.slice(self.spanIndexLeft(p));
|
300
|
+
};
|
301
|
+
}
|
302
|
+
|
303
|
+
/**
|
304
|
+
* Test if a value is a member of an array. Takes an `Eq<A>` as a single
|
305
|
+
* argument which returns the function to use to search for a value of type `A` in
|
306
|
+
* an array of type `ReadonlyArray<A>`.
|
307
|
+
*
|
308
|
+
* @tsplus pipeable fncts.ReadonlyArray elem
|
309
|
+
* @tsplus pipeable fncts.Array elem
|
310
|
+
*/
|
311
|
+
export function elem<A>(a: A, /** @tsplus auto */ E: P.Eq<A>) {
|
312
|
+
return (as: ReadonlyArray<A>): boolean => {
|
313
|
+
const predicate = (element: A) => E.equals(a)(element);
|
314
|
+
const len = as.length;
|
315
|
+
for (let i = 0; i < len; i++) {
|
316
|
+
if (predicate(as[i]!)) {
|
317
|
+
return true;
|
318
|
+
}
|
319
|
+
}
|
320
|
+
return false;
|
321
|
+
};
|
322
|
+
}
|
323
|
+
|
324
|
+
/**
|
325
|
+
* @tsplus pipeable fncts.ReadonlyArray every
|
326
|
+
*/
|
327
|
+
export function every<A, B extends A>(p: Refinement<A, B>): (self: ReadonlyArray<A>) => self is ReadonlyArray<B>;
|
328
|
+
export function every<A>(p: Predicate<A>): (self: ReadonlyArray<A>) => boolean;
|
329
|
+
export function every<A>(p: Predicate<A>) {
|
330
|
+
return (self: ReadonlyArray<A>): boolean => {
|
331
|
+
return self.everyWithIndex((_, a) => p(a));
|
332
|
+
};
|
333
|
+
}
|
334
|
+
|
335
|
+
/**
|
336
|
+
* @tsplus pipeable fncts.ReadonlyArray everyWithIndex
|
337
|
+
*/
|
338
|
+
export function everyWithIndex<A, B extends A>(
|
339
|
+
p: RefinementWithIndex<number, A, B>,
|
340
|
+
): (self: ReadonlyArray<A>) => self is ReadonlyArray<B>;
|
341
|
+
export function everyWithIndex<A>(p: PredicateWithIndex<number, A>): (self: ReadonlyArray<A>) => boolean;
|
342
|
+
export function everyWithIndex<A>(p: PredicateWithIndex<number, A>) {
|
343
|
+
return (self: ReadonlyArray<A>): boolean => {
|
344
|
+
let result = true;
|
345
|
+
let i = 0;
|
346
|
+
while (result && i < self.length) {
|
347
|
+
result = p(i, self[i]!);
|
348
|
+
i++;
|
349
|
+
}
|
350
|
+
return result;
|
351
|
+
};
|
352
|
+
}
|
353
|
+
|
354
|
+
/**
|
355
|
+
* @tsplus pipeable fncts.ReadonlyArray filter
|
356
|
+
*/
|
357
|
+
export function filter<A, B extends A>(p: Refinement<A, B>): (self: ReadonlyArray<A>) => ReadonlyArray<B>;
|
358
|
+
export function filter<A>(p: Predicate<A>): (self: ReadonlyArray<A>) => ReadonlyArray<A>;
|
359
|
+
export function filter<A>(p: Predicate<A>) {
|
360
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
361
|
+
return self.filterWithIndex((_, a) => p(a));
|
362
|
+
};
|
363
|
+
}
|
364
|
+
|
365
|
+
/**
|
366
|
+
* @tsplus pipeable fncts.ReadonlyArray filterMap
|
367
|
+
*/
|
368
|
+
export function filterMap<A, B>(f: (a: A) => Maybe<B>) {
|
369
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
|
370
|
+
return self.filterMapWithIndex((_, a) => f(a));
|
371
|
+
};
|
372
|
+
}
|
373
|
+
|
374
|
+
/**
|
375
|
+
* @tsplus pipeable fncts.Array filterMap
|
376
|
+
* @tsplus pipeable fncts.ReadonlyArray filterMap
|
377
|
+
*/
|
378
|
+
export function filterMapUndefined<A, B>(f: (a: A) => B | undefined) {
|
379
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
|
380
|
+
const out: Array<B> = [];
|
381
|
+
for (let i = 0; i < self.length; i++) {
|
382
|
+
const v = f(self[i]!);
|
383
|
+
if (v !== undefined) {
|
384
|
+
out.push(v);
|
385
|
+
}
|
386
|
+
}
|
387
|
+
return out;
|
388
|
+
};
|
389
|
+
}
|
390
|
+
|
391
|
+
/**
|
392
|
+
* @tsplus pipeable fncts.ReadonlyArray filterMapWithIndex
|
393
|
+
*/
|
394
|
+
export function filterMapWithIndex<A, B>(f: (i: number, a: A) => Maybe<B>) {
|
395
|
+
return (fa: ReadonlyArray<A>): ReadonlyArray<B> => {
|
396
|
+
const result = [];
|
397
|
+
for (let i = 0; i < fa.length; i++) {
|
398
|
+
const maybeB = f(i, fa[i]!);
|
399
|
+
if (maybeB.isJust()) {
|
400
|
+
result.push(maybeB.value);
|
401
|
+
}
|
402
|
+
}
|
403
|
+
return result;
|
404
|
+
};
|
405
|
+
}
|
406
|
+
|
407
|
+
/**
|
408
|
+
* @tsplus pipeable fncts.ReadonlyArray filterWithIndex
|
409
|
+
*/
|
410
|
+
export function filterWithIndex<A, B extends A>(
|
411
|
+
p: RefinementWithIndex<number, A, B>,
|
412
|
+
): (self: ReadonlyArray<A>) => ReadonlyArray<B>;
|
413
|
+
export function filterWithIndex<A>(p: PredicateWithIndex<number, A>): (self: ReadonlyArray<A>) => ReadonlyArray<A>;
|
414
|
+
export function filterWithIndex<A>(p: PredicateWithIndex<number, A>) {
|
415
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
416
|
+
const result: Array<A> = [];
|
417
|
+
for (let i = 0; i < self.length; i++) {
|
418
|
+
const a = self[i]!;
|
419
|
+
if (p(i, a)) {
|
420
|
+
result.push(a);
|
421
|
+
}
|
422
|
+
}
|
423
|
+
return result;
|
424
|
+
};
|
425
|
+
}
|
426
|
+
|
427
|
+
/**
|
428
|
+
* @tsplus pipeable fncts.ReadonlyArray find
|
429
|
+
*/
|
430
|
+
export function find<A, B extends A>(p: Refinement<A, B>): (self: ReadonlyArray<A>) => Maybe<B>;
|
431
|
+
export function find<A>(p: Predicate<A>): (self: ReadonlyArray<A>) => Maybe<A>;
|
432
|
+
export function find<A>(p: Predicate<A>) {
|
433
|
+
return (self: ReadonlyArray<A>): Maybe<A> => {
|
434
|
+
return self.findWithIndex((_, a) => p(a));
|
435
|
+
};
|
436
|
+
}
|
437
|
+
|
438
|
+
/**
|
439
|
+
* @tsplus pipeable fncts.ReadonlyArray findIndex
|
440
|
+
*/
|
441
|
+
export function findIndex<A>(predicate: Predicate<A>) {
|
442
|
+
return (as: ReadonlyArray<A>): Maybe<number> => {
|
443
|
+
return as.findMapWithIndex((i, a) => (predicate(a) ? Just(i) : Nothing()));
|
444
|
+
};
|
445
|
+
}
|
446
|
+
|
447
|
+
/**
|
448
|
+
* @tsplus pipeable fncts.ReadonlyArray findLast
|
449
|
+
*/
|
450
|
+
export function findLast<A, B extends A>(p: Refinement<A, B>): (as: ReadonlyArray<A>) => Maybe<B>;
|
451
|
+
export function findLast<A>(p: Predicate<A>): (as: ReadonlyArray<A>) => Maybe<A>;
|
452
|
+
export function findLast<A>(p: Predicate<A>) {
|
453
|
+
return (as: ReadonlyArray<A>): Maybe<A> => {
|
454
|
+
const len = as.length;
|
455
|
+
for (let i = len - 1; i >= 0; i--) {
|
456
|
+
if (p(as[i]!)) {
|
457
|
+
return Just(as[i]!);
|
458
|
+
}
|
459
|
+
}
|
460
|
+
return Nothing();
|
461
|
+
};
|
462
|
+
}
|
463
|
+
/**
|
464
|
+
* @tsplus pipeable fncts.ReadonlyArray findLastIndex
|
465
|
+
*/
|
466
|
+
export function findLastIndex<A>(p: Predicate<A>) {
|
467
|
+
return (self: ReadonlyArray<A>): Maybe<number> => {
|
468
|
+
return self.findLastMapWithIndex((i, a) => (p(a) ? Just(i) : Nothing()));
|
469
|
+
};
|
470
|
+
}
|
471
|
+
|
472
|
+
/**
|
473
|
+
* @tsplus pipeable fncts.ReadonlyArray findLastMap
|
474
|
+
*/
|
475
|
+
export function findLastMap<A, B>(f: (a: A) => Maybe<B>) {
|
476
|
+
return (as: ReadonlyArray<A>): Maybe<B> => {
|
477
|
+
return as.findLastMapWithIndex((_, a) => f(a));
|
478
|
+
};
|
479
|
+
}
|
480
|
+
|
481
|
+
/**
|
482
|
+
* @tsplus pipeable fncts.ReadonlyArray findLastMapWithIndex
|
483
|
+
*/
|
484
|
+
export function findLastMapWithIndex<A, B>(f: (i: number, a: A) => Maybe<B>) {
|
485
|
+
return (as: ReadonlyArray<A>): Maybe<B> => {
|
486
|
+
const len = as.length;
|
487
|
+
for (let i = len - 1; i >= 0; i--) {
|
488
|
+
const v = f(i, as[i]!);
|
489
|
+
if (v.isJust()) {
|
490
|
+
return v;
|
491
|
+
}
|
492
|
+
}
|
493
|
+
return Nothing();
|
494
|
+
};
|
495
|
+
}
|
496
|
+
/**
|
497
|
+
* @tsplus pipeable fncts.ReadonlyArray findMap
|
498
|
+
*/
|
499
|
+
export function findMap<A, B>(f: (a: A) => Maybe<B>) {
|
500
|
+
return (as: ReadonlyArray<A>): Maybe<B> => {
|
501
|
+
return as.findMapWithIndex((_, a) => f(a));
|
502
|
+
};
|
503
|
+
}
|
504
|
+
/**
|
505
|
+
* @tsplus pipeable fncts.ReadonlyArray findMapWithIndex
|
506
|
+
*/
|
507
|
+
export function findMapWithIndex<A, B>(f: (index: number, a: A) => Maybe<B>) {
|
508
|
+
return (as: ReadonlyArray<A>): Maybe<B> => {
|
509
|
+
const len = as.length;
|
510
|
+
for (let i = 0; i < len; i++) {
|
511
|
+
const v = f(i, as[i]!);
|
512
|
+
if (v.isJust()) {
|
513
|
+
return v;
|
514
|
+
}
|
515
|
+
}
|
516
|
+
return Nothing();
|
517
|
+
};
|
518
|
+
}
|
519
|
+
|
520
|
+
/**
|
521
|
+
* @tsplus pipeable fncts.ReadonlyArray findWithIndex
|
522
|
+
*/
|
523
|
+
export function findWithIndex<A, B extends A>(p: RefinementWithIndex<number, A, B>): (as: ReadonlyArray<A>) => Maybe<B>;
|
524
|
+
export function findWithIndex<A>(p: PredicateWithIndex<number, A>): (as: ReadonlyArray<A>) => Maybe<A>;
|
525
|
+
export function findWithIndex<A>(p: PredicateWithIndex<number, A>) {
|
526
|
+
return (as: ReadonlyArray<A>): Maybe<A> => {
|
527
|
+
const len = as.length;
|
528
|
+
for (let i = 0; i < len; i++) {
|
529
|
+
if (p(i, as[i]!)) {
|
530
|
+
return Just(as[i]!);
|
531
|
+
}
|
532
|
+
}
|
533
|
+
return Nothing();
|
534
|
+
};
|
535
|
+
}
|
536
|
+
/**
|
537
|
+
* @tsplus pipeable fncts.ReadonlyArray flatMap
|
538
|
+
*/
|
539
|
+
export function flatMap<A, B>(f: (a: A) => ReadonlyArray<B>) {
|
540
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
|
541
|
+
return self.flatMapWithIndex((_, a) => f(a));
|
542
|
+
};
|
543
|
+
}
|
544
|
+
/**
|
545
|
+
* @tsplus pipeable fncts.ReadonlyArray flatMapWithIndex
|
546
|
+
*/
|
547
|
+
export function flatMapWithIndex<A, B>(f: (i: number, a: A) => ReadonlyArray<B>) {
|
548
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
|
549
|
+
let outLen = 0;
|
550
|
+
const len = self.length;
|
551
|
+
const temp = Array<Array<B>>(len);
|
552
|
+
for (let i = 0; i < len; i++) {
|
553
|
+
const e = self[i]!;
|
554
|
+
const arr = f(i, e);
|
555
|
+
outLen += arr.length;
|
556
|
+
temp[i] = arr! as Array<B>;
|
557
|
+
}
|
558
|
+
const out = Array<B>(outLen);
|
559
|
+
let start = 0;
|
560
|
+
for (let i = 0; i < len; i++) {
|
561
|
+
const arr = temp[i]!;
|
562
|
+
const l = arr.length;
|
563
|
+
for (let j = 0; j < l; j++) {
|
564
|
+
out[j + start] = arr[j]!;
|
565
|
+
}
|
566
|
+
start += l;
|
567
|
+
}
|
568
|
+
return out;
|
569
|
+
};
|
570
|
+
}
|
571
|
+
|
572
|
+
/**
|
573
|
+
* @tsplus getter fncts.ReadonlyArray flatten
|
574
|
+
*/
|
575
|
+
export function flatten<A>(self: ReadonlyArray<ReadonlyArray<A>>): ReadonlyArray<A> {
|
576
|
+
return self.flatMap(identity);
|
577
|
+
}
|
578
|
+
|
579
|
+
/**
|
580
|
+
* @tsplus pipeable fncts.ReadonlyArray fold
|
581
|
+
*/
|
582
|
+
export function fold<M>(/** @tsplus auto */ M: Monoid<M>) {
|
583
|
+
return (self: ReadonlyArray<M>): M => {
|
584
|
+
return self.foldLeft(M.nat, (b, a) => M.combine(a)(b));
|
585
|
+
};
|
586
|
+
}
|
587
|
+
|
588
|
+
/**
|
589
|
+
* @tsplus pipeable fncts.ReadonlyArray foldLeft
|
590
|
+
* @tsplus pipeable fncts.Array foldLeft
|
591
|
+
*/
|
592
|
+
export function foldLeft<A, B>(b: B, f: (b: B, a: A) => B) {
|
593
|
+
return (self: ReadonlyArray<A>): B => {
|
594
|
+
return self.foldLeftWithIndex(b, (_, b, a) => f(b, a));
|
595
|
+
};
|
596
|
+
}
|
597
|
+
|
598
|
+
/**
|
599
|
+
* @tsplus pipeable fncts.ReadonlyArray foldLeftWhile
|
600
|
+
* @tsplus pipeable fncts.Array foldLeftWhile
|
601
|
+
*/
|
602
|
+
export function foldLeftWhile<A, B>(b: B, p: Predicate<B>, f: (b: B, a: A) => B) {
|
603
|
+
return (self: ReadonlyArray<A>): B => {
|
604
|
+
return self.foldLeftWithIndexWhile(b, p, (_, b, a) => f(b, a));
|
605
|
+
};
|
606
|
+
}
|
607
|
+
|
608
|
+
/**
|
609
|
+
* @tsplus pipeable fncts.ReadonlyArray foldLeftWithIndex
|
610
|
+
* @tsplus pipeable fncts.Array foldLeftWithIndex
|
611
|
+
*/
|
612
|
+
export function foldLeftWithIndex<A, B>(b: B, f: (i: number, b: B, a: A) => B) {
|
613
|
+
return (self: ReadonlyArray<A>): B => {
|
614
|
+
const len = self.length;
|
615
|
+
let r = b;
|
616
|
+
for (let i = 0; i < len; i++) {
|
617
|
+
r = f(i, r, self[i]!);
|
618
|
+
}
|
619
|
+
return r;
|
620
|
+
};
|
621
|
+
}
|
622
|
+
|
623
|
+
/**
|
624
|
+
* @tsplus pipeable fncts.ReadonlyArray foldLeftWithIndexWhile
|
625
|
+
* @tsplus pipeable fncts.Array foldLeftWithIndexWhile
|
626
|
+
*/
|
627
|
+
export function foldLeftWithIndexWhile<A, B>(b: B, p: Predicate<B>, f: (i: number, b: B, a: A) => B) {
|
628
|
+
return (self: ReadonlyArray<A>): B => {
|
629
|
+
let out = b;
|
630
|
+
let cont = p(out);
|
631
|
+
for (let i = 0; cont && i < self.length; i++) {
|
632
|
+
out = f(i, out, self[i]!);
|
633
|
+
cont = p(out);
|
634
|
+
}
|
635
|
+
return out;
|
636
|
+
};
|
637
|
+
}
|
638
|
+
|
639
|
+
/**
|
640
|
+
* @tsplus pipeable fncts.ReadonlyArray foldMap
|
641
|
+
*/
|
642
|
+
export function foldMap<A, M>(f: (a: A) => M, /** @tsplus auto */ M: Monoid<M>) {
|
643
|
+
return (self: ReadonlyArray<A>): M => {
|
644
|
+
return self.foldMapWithIndex((_, a) => f(a), M);
|
645
|
+
};
|
646
|
+
}
|
647
|
+
|
648
|
+
/**
|
649
|
+
* @tsplus pipeable fncts.ReadonlyArray foldMapWithIndex
|
650
|
+
*/
|
651
|
+
export function foldMapWithIndex<A, M>(f: (i: number, a: A) => M, /** @tsplus auto */ M: Monoid<M>) {
|
652
|
+
return (self: ReadonlyArray<A>): M => {
|
653
|
+
return self.foldLeftWithIndex(M.nat, (i, b, a) => M.combine(f(i, a))(b));
|
654
|
+
};
|
655
|
+
}
|
656
|
+
|
657
|
+
/**
|
658
|
+
* @tsplus pipeable fncts.ReadonlyArray foldRight
|
659
|
+
*/
|
660
|
+
export function foldRight<A, B>(b: B, f: (a: A, b: B) => B) {
|
661
|
+
return (self: ReadonlyArray<A>): B => {
|
662
|
+
return self.foldRightWithIndex(b, (_, a, b) => f(a, b));
|
663
|
+
};
|
664
|
+
}
|
665
|
+
|
666
|
+
/**
|
667
|
+
* @tsplus pipeable fncts.ReadonlyArray foldRighWhile
|
668
|
+
*/
|
669
|
+
export function foldRightWhile<A, B>(b: B, p: Predicate<B>, f: (a: A, b: B) => B) {
|
670
|
+
return (self: ReadonlyArray<A>): B => {
|
671
|
+
return self.foldRightWithIndexWhile(b, p, (_, a, b) => f(a, b));
|
672
|
+
};
|
673
|
+
}
|
674
|
+
|
675
|
+
/**
|
676
|
+
* @tsplus pipeable fncts.ReadonlyArray foldRightWithIndex
|
677
|
+
*/
|
678
|
+
export function foldRightWithIndex<A, B>(b: B, f: (i: number, a: A, b: B) => B) {
|
679
|
+
return (self: ReadonlyArray<A>): B => {
|
680
|
+
let r = b;
|
681
|
+
for (let i = self.length - 1; i >= 0; i--) {
|
682
|
+
r = f(i, self[i]!, r);
|
683
|
+
}
|
684
|
+
return r;
|
685
|
+
};
|
686
|
+
}
|
687
|
+
|
688
|
+
/**
|
689
|
+
* @tsplus pipeable fncts.ReadonlyArray foldRightWithIndexWhile
|
690
|
+
*/
|
691
|
+
export function foldRightWithIndexWhile<A, B>(b: B, predicate: Predicate<B>, f: (i: number, a: A, b: B) => B) {
|
692
|
+
return (self: ReadonlyArray<A>): B => {
|
693
|
+
let out = b;
|
694
|
+
let cont = predicate(out);
|
695
|
+
for (let i = self.length - 1; cont && i >= 0; i--) {
|
696
|
+
out = f(i, self[i]!, out);
|
697
|
+
cont = predicate(out);
|
698
|
+
}
|
699
|
+
return out;
|
700
|
+
};
|
701
|
+
}
|
702
|
+
|
703
|
+
/**
|
704
|
+
* @tsplus pipeable fncts.ReadonlyArray forEach
|
705
|
+
*/
|
706
|
+
export function forEach<A, B>(f: (a: A) => B) {
|
707
|
+
return (self: ReadonlyArray<A>): void => {
|
708
|
+
return self.forEach(f);
|
709
|
+
};
|
710
|
+
}
|
711
|
+
|
712
|
+
/**
|
713
|
+
* @tsplus static fncts.ArrayOps fromValue
|
714
|
+
*/
|
715
|
+
export function fromValue<A>(value: A): A extends Array<any> ? A : A extends ReadonlyArray<any> ? A : ReadonlyArray<A> {
|
716
|
+
if (Array.isArray(value)) {
|
717
|
+
return value as ReturnType<typeof fromValue<A>>;
|
718
|
+
} else {
|
719
|
+
return [value] as ReturnType<typeof fromValue<A>>;
|
720
|
+
}
|
721
|
+
}
|
722
|
+
|
723
|
+
/**
|
724
|
+
* @tsplus pipeable fncts.ReadonlyArray get
|
725
|
+
* @tsplus pipeable fncts.MutableArray get
|
726
|
+
*/
|
727
|
+
export function get(i: number) {
|
728
|
+
return <A>(self: ReadonlyArray<A>): Maybe<A> => {
|
729
|
+
return self.isOutOfBound(i) ? Nothing() : Just(self[i]!);
|
730
|
+
};
|
731
|
+
}
|
732
|
+
|
733
|
+
/**
|
734
|
+
* @tsplus pipeable fncts.ReadonlyArray group
|
735
|
+
*/
|
736
|
+
export function group<A>(E: P.Eq<A>): (self: ReadonlyArray<A>) => ReadonlyArray<ReadonlyNonEmptyArray<A>> {
|
737
|
+
return chop((self) => {
|
738
|
+
const h = self[0]!;
|
739
|
+
const out = [h];
|
740
|
+
let i = 1;
|
741
|
+
for (; i < self.length; i++) {
|
742
|
+
const a = self[i]!;
|
743
|
+
if (E.equals(h)(a)) {
|
744
|
+
out.push(a);
|
745
|
+
} else {
|
746
|
+
break;
|
747
|
+
}
|
748
|
+
}
|
749
|
+
return [out.unsafeAsNonEmptyArray, self.slice(i)];
|
750
|
+
});
|
751
|
+
}
|
752
|
+
|
753
|
+
/**
|
754
|
+
* @tsplus pipeable fncts.ReadonlyArray groupBy
|
755
|
+
*/
|
756
|
+
export function groupBy<A>(f: (a: A) => string) {
|
757
|
+
return (self: ReadonlyArray<A>): Readonly<Record<string, ReadonlyNonEmptyArray<A>>> => {
|
758
|
+
const out: Record<string, NonEmptyArray<A>> = {};
|
759
|
+
for (let i = 0; i < self.length; i++) {
|
760
|
+
const a = self[i]!;
|
761
|
+
const k = f(a);
|
762
|
+
if (Object.prototype.hasOwnProperty.call(out, k)) {
|
763
|
+
out[k]!.push(a);
|
764
|
+
} else {
|
765
|
+
out[k] = [a];
|
766
|
+
}
|
767
|
+
}
|
768
|
+
return Dictionary.get(out).map(ReadonlyNonEmptyArray.from).toRecord;
|
769
|
+
};
|
770
|
+
}
|
771
|
+
|
772
|
+
/**
|
773
|
+
* @tsplus getter fncts.ReadonlyArray head
|
774
|
+
*/
|
775
|
+
export function head<A>(self: ReadonlyArray<A>): Maybe<A> {
|
776
|
+
return self.isNonEmpty() ? Just(self[0]) : Nothing();
|
777
|
+
}
|
778
|
+
|
779
|
+
/**
|
780
|
+
* @tsplus getter fncts.ReadonlyArray init
|
781
|
+
*/
|
782
|
+
export function init<A>(self: ReadonlyArray<A>): Maybe<ReadonlyArray<A>> {
|
783
|
+
const len = self.length;
|
784
|
+
return len === 0 ? Nothing() : Just(self.slice(0, len - 1));
|
785
|
+
}
|
786
|
+
|
787
|
+
/**
|
788
|
+
* @tsplus pipeable fncts.ReadonlyArray insertAt
|
789
|
+
*/
|
790
|
+
export function insertAt<A>(i: number, a: A) {
|
791
|
+
return (self: ReadonlyArray<A>): Maybe<ReadonlyNonEmptyArray<A>> => {
|
792
|
+
return self.isOutOfBound(i) ? Nothing() : Just(self.unsafeInsertAt(i, a));
|
793
|
+
};
|
794
|
+
}
|
795
|
+
|
796
|
+
/**
|
797
|
+
* @tsplus pipeable fncts.ReadonlyArray intersection
|
798
|
+
*/
|
799
|
+
export function intersection<A>(that: ReadonlyArray<A>, /** @tsplus auto */ E: P.Eq<A>) {
|
800
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
801
|
+
return self.filter((a) => that.elem(a, E));
|
802
|
+
};
|
803
|
+
}
|
804
|
+
|
805
|
+
/**
|
806
|
+
* @tsplus pipeable fncts.ReadonlyArray intersperse
|
807
|
+
*/
|
808
|
+
export function intersperse<A>(a: A) {
|
809
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
810
|
+
const len = self.length;
|
811
|
+
return len === 0 ? self : self.slice(1, len).prependAll(a).prepend(self[0]!);
|
812
|
+
};
|
813
|
+
}
|
814
|
+
|
815
|
+
/**
|
816
|
+
* @tsplus fluent fncts.ReadonlyArray isEmpty
|
817
|
+
*/
|
818
|
+
export function isEmpty<A>(self: ReadonlyArray<A>): boolean {
|
819
|
+
return self.length === 0;
|
820
|
+
}
|
821
|
+
|
822
|
+
/**
|
823
|
+
* @tsplus fluent fncts.ReadonlyArray isNonEmpty
|
824
|
+
*/
|
825
|
+
export function isNonEmpty<A>(self: ReadonlyArray<A>): self is ReadonlyNonEmptyArray<A> {
|
826
|
+
return self.length > 0;
|
827
|
+
}
|
828
|
+
|
829
|
+
/**
|
830
|
+
* @tsplus pipeable fncts.ReadonlyArray isOutOfBound
|
831
|
+
*/
|
832
|
+
export function isOutOfBound(i: number) {
|
833
|
+
return <A>(self: ReadonlyArray<A>): boolean => {
|
834
|
+
return i < 0 || i >= self.length;
|
835
|
+
};
|
836
|
+
}
|
837
|
+
|
838
|
+
/**
|
839
|
+
* @tsplus pipeable fncts.ReadonlyArray join
|
840
|
+
*/
|
841
|
+
export function join(separator: string) {
|
842
|
+
return (self: ReadonlyArray<string>): string => {
|
843
|
+
return self.join(separator);
|
844
|
+
};
|
845
|
+
}
|
846
|
+
|
847
|
+
/**
|
848
|
+
* @tsplus getter fncts.ReadonlyArray last
|
849
|
+
*/
|
850
|
+
export function last<A>(self: ReadonlyArray<A>): Maybe<A> {
|
851
|
+
return self.get(self.length - 1);
|
852
|
+
}
|
853
|
+
|
854
|
+
/**
|
855
|
+
* @tsplus getter fncts.ReadonlyArray lefts
|
856
|
+
*/
|
857
|
+
export function lefts<E, A>(self: ReadonlyArray<Either<E, A>>): ReadonlyArray<E> {
|
858
|
+
const ls: Array<E> = [];
|
859
|
+
for (let i = 0; i < self.length; i++) {
|
860
|
+
const a = self[i]!;
|
861
|
+
Either.concrete(a);
|
862
|
+
if (a._tag === EitherTag.Left) {
|
863
|
+
ls.push(a.left);
|
864
|
+
}
|
865
|
+
}
|
866
|
+
return ls;
|
867
|
+
}
|
868
|
+
|
869
|
+
/**
|
870
|
+
* @tsplus getter fncts.ReadonlyArray length
|
871
|
+
*/
|
872
|
+
export function length<A>(self: ReadonlyArray<A>): number {
|
873
|
+
return self.length;
|
874
|
+
}
|
875
|
+
|
876
|
+
/**
|
877
|
+
* @tsplus pipeable fncts.ReadonlyArray map
|
878
|
+
*/
|
879
|
+
export function map<A, B>(f: (a: A) => B) {
|
880
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
|
881
|
+
return self.mapWithIndex((_, a) => f(a));
|
882
|
+
};
|
883
|
+
}
|
884
|
+
|
885
|
+
/**
|
886
|
+
* @tsplus pipeable fncts.ReadonlyArray mapAccum
|
887
|
+
*/
|
888
|
+
export function mapAccum<A, S, B>(s: S, f: (s: S, a: A) => readonly [B, S]) {
|
889
|
+
return (self: ReadonlyArray<A>): readonly [ReadonlyArray<B>, S] => {
|
890
|
+
const bs = Array<B>(self.length);
|
891
|
+
let state = s;
|
892
|
+
for (let i = 0; i < self.length; i++) {
|
893
|
+
const result = f(state, self[i]!);
|
894
|
+
bs[i] = result[0];
|
895
|
+
state = result[1];
|
896
|
+
}
|
897
|
+
return [bs, state];
|
898
|
+
};
|
899
|
+
}
|
900
|
+
|
901
|
+
/**
|
902
|
+
* @tsplus pipeable fncts.ReadonlyArray mapWithIndex
|
903
|
+
*/
|
904
|
+
export function mapWithIndex<A, B>(f: (i: number, a: A) => B) {
|
905
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
|
906
|
+
const len = self.length;
|
907
|
+
const bs = Array<B>(len);
|
908
|
+
for (let i = 0; i < len; i++) {
|
909
|
+
bs[i] = f(i, self[i]!);
|
910
|
+
}
|
911
|
+
return bs;
|
912
|
+
};
|
913
|
+
}
|
914
|
+
|
915
|
+
/**
|
916
|
+
* @tsplus pipeable fncts.ReadonlyArray modifyAt
|
917
|
+
*/
|
918
|
+
export function modifyAt<A>(i: number, f: (a: A) => A) {
|
919
|
+
return (self: ReadonlyArray<A>): Maybe<ReadonlyArray<A>> => {
|
920
|
+
return self.isOutOfBound(i) ? Nothing() : Just(self.unsafeModifyAt(i, f));
|
921
|
+
};
|
922
|
+
}
|
923
|
+
|
924
|
+
/**
|
925
|
+
* @tsplus getter fncts.ReadonlyArray mutableClone
|
926
|
+
*/
|
927
|
+
export function mutableClone<A>(self: ReadonlyArray<A>): Array<A> {
|
928
|
+
return self.slice(0);
|
929
|
+
}
|
930
|
+
|
931
|
+
/**
|
932
|
+
* @tsplus pipeable fncts.ReadonlyArray mutate
|
933
|
+
*/
|
934
|
+
export function mutate<A>(f: (self: Array<A>) => void) {
|
935
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
936
|
+
const mut = mutableClone(self);
|
937
|
+
f(mut);
|
938
|
+
return mut;
|
939
|
+
};
|
940
|
+
}
|
941
|
+
|
942
|
+
/**
|
943
|
+
* @tsplus pipeable fncts.ReadonlyArray partition
|
944
|
+
*/
|
945
|
+
export function partition<A, B extends A>(
|
946
|
+
p: Refinement<A, B>,
|
947
|
+
): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<B>];
|
948
|
+
export function partition<A>(
|
949
|
+
p: Predicate<A>,
|
950
|
+
): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<A>];
|
951
|
+
export function partition<A>(p: Predicate<A>) {
|
952
|
+
return (self: ReadonlyArray<A>): readonly [ReadonlyArray<A>, ReadonlyArray<A>] => {
|
953
|
+
return self.partitionWithIndex((_, a) => p(a));
|
954
|
+
};
|
955
|
+
}
|
956
|
+
|
957
|
+
/**
|
958
|
+
* @tsplus pipeable fncts.ReadonlyArray partitionMap
|
959
|
+
*/
|
960
|
+
export function partitionMap<A, B, C>(f: (a: A) => Either<B, C>) {
|
961
|
+
return (self: ReadonlyArray<A>): readonly [ReadonlyArray<B>, ReadonlyArray<C>] => {
|
962
|
+
return self.partitionMapWithIndex((_, a) => f(a));
|
963
|
+
};
|
964
|
+
}
|
965
|
+
|
966
|
+
/**
|
967
|
+
* @tsplus pipeable fncts.ReadonlyArray partitionMapWithIndex
|
968
|
+
*/
|
969
|
+
export function partitionMapWithIndex<A, B, C>(f: (i: number, a: A) => Either<B, C>) {
|
970
|
+
return (self: ReadonlyArray<A>): readonly [ReadonlyArray<B>, ReadonlyArray<C>] => {
|
971
|
+
const left = [] as Array<B>;
|
972
|
+
const right = [] as Array<C>;
|
973
|
+
for (let i = 0; i < self.length; i++) {
|
974
|
+
const ea = f(i, self[i]!);
|
975
|
+
Either.concrete(ea);
|
976
|
+
switch (ea._tag) {
|
977
|
+
case EitherTag.Left:
|
978
|
+
left.push(ea.left);
|
979
|
+
break;
|
980
|
+
case EitherTag.Right:
|
981
|
+
right.push(ea.right);
|
982
|
+
break;
|
983
|
+
}
|
984
|
+
}
|
985
|
+
return [left, right];
|
986
|
+
};
|
987
|
+
}
|
988
|
+
|
989
|
+
/**
|
990
|
+
* @tsplus pipeable fncts.ReadonlyArray partitionWithIndex
|
991
|
+
*/
|
992
|
+
export function partitionWithIndex<A, B extends A>(
|
993
|
+
p: RefinementWithIndex<number, A, B>,
|
994
|
+
): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<B>];
|
995
|
+
export function partitionWithIndex<A>(
|
996
|
+
p: PredicateWithIndex<number, A>,
|
997
|
+
): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<A>];
|
998
|
+
export function partitionWithIndex<A>(p: PredicateWithIndex<number, A>) {
|
999
|
+
return (self: ReadonlyArray<A>): readonly [ReadonlyArray<A>, ReadonlyArray<A>] => {
|
1000
|
+
const left: Array<A> = [];
|
1001
|
+
const right: Array<A> = [];
|
1002
|
+
for (let i = 0; i < self.length; i++) {
|
1003
|
+
const a = self[i]!;
|
1004
|
+
if (p(i, a)) {
|
1005
|
+
right.push(a);
|
1006
|
+
} else {
|
1007
|
+
left.push(a);
|
1008
|
+
}
|
1009
|
+
}
|
1010
|
+
return [left, right];
|
1011
|
+
};
|
1012
|
+
}
|
1013
|
+
|
1014
|
+
/**
|
1015
|
+
* @tsplus pipeable fncts.ReadonlyArray prepend
|
1016
|
+
*/
|
1017
|
+
export function prepend<B>(head: B) {
|
1018
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<A | B> => {
|
1019
|
+
const len = self.length;
|
1020
|
+
const out = Array<A | B>(len + 1);
|
1021
|
+
out[0] = head;
|
1022
|
+
for (let i = 0; i < len; i++) {
|
1023
|
+
out[i + 1] = self[i]!;
|
1024
|
+
}
|
1025
|
+
return out;
|
1026
|
+
};
|
1027
|
+
}
|
1028
|
+
|
1029
|
+
/**
|
1030
|
+
* @tsplus pipeable fncts.ReadonlyArray prependAll
|
1031
|
+
* @tsplus pipeable fncts.Array prependAll
|
1032
|
+
*/
|
1033
|
+
export function prependAll<A>(a: A) {
|
1034
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1035
|
+
const out: Array<A> = [];
|
1036
|
+
for (let i = 0; i < self.length; i++) {
|
1037
|
+
out.push(a, self[i]!);
|
1038
|
+
}
|
1039
|
+
return out;
|
1040
|
+
};
|
1041
|
+
}
|
1042
|
+
|
1043
|
+
/**
|
1044
|
+
* @tsplus getter fncts.ReadonlyArray reverse
|
1045
|
+
*/
|
1046
|
+
export function reverse<A>(self: ReadonlyArray<A>): ReadonlyArray<A> {
|
1047
|
+
if (self.isEmpty()) {
|
1048
|
+
return self;
|
1049
|
+
} else if (self.length === 1) {
|
1050
|
+
return [self[0]!];
|
1051
|
+
} else {
|
1052
|
+
const out = Array<A>(self.length);
|
1053
|
+
for (let j = 0, i = self.length - 1; i >= 0; i--, j++) {
|
1054
|
+
out[j] = self[i]!;
|
1055
|
+
}
|
1056
|
+
return out;
|
1057
|
+
}
|
1058
|
+
}
|
1059
|
+
|
1060
|
+
/**
|
1061
|
+
* @tsplus getter fncts.ReadonlyArray rights
|
1062
|
+
*/
|
1063
|
+
export function rights<E, A>(self: ReadonlyArray<Either<E, A>>): ReadonlyArray<A> {
|
1064
|
+
const rs: Array<A> = [];
|
1065
|
+
for (let i = 0; i < self.length; i++) {
|
1066
|
+
const a = self[i]!;
|
1067
|
+
Either.concrete(a);
|
1068
|
+
if (a._tag === EitherTag.Right) {
|
1069
|
+
rs.push(a.right);
|
1070
|
+
}
|
1071
|
+
}
|
1072
|
+
return rs;
|
1073
|
+
}
|
1074
|
+
|
1075
|
+
/**
|
1076
|
+
* @tsplus pipeable fncts.ReadonlyArray rotate
|
1077
|
+
*/
|
1078
|
+
export function rotate(n: number) {
|
1079
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1080
|
+
const len = self.length;
|
1081
|
+
if (n === 0 || len <= 1 || len === Math.abs(n)) {
|
1082
|
+
return self;
|
1083
|
+
} else if (n < 0) {
|
1084
|
+
return self.rotate(len + n);
|
1085
|
+
} else {
|
1086
|
+
return self.slice(-n).concat(self.slice(0, len - n));
|
1087
|
+
}
|
1088
|
+
};
|
1089
|
+
}
|
1090
|
+
|
1091
|
+
/**
|
1092
|
+
* @tsplus pipeable fncts.ReadonlyArray scanLeft
|
1093
|
+
*/
|
1094
|
+
export function scanLeft<A, B>(b: B, f: (b: B, a: A) => B) {
|
1095
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
|
1096
|
+
const l = self.length;
|
1097
|
+
const r = Array(l + 1);
|
1098
|
+
r[0] = b;
|
1099
|
+
for (let i = 0; i < l; i++) {
|
1100
|
+
r[i + 1] = f(r[i]!, self[i]!);
|
1101
|
+
}
|
1102
|
+
return r;
|
1103
|
+
};
|
1104
|
+
}
|
1105
|
+
|
1106
|
+
/**
|
1107
|
+
* @tsplus pipeable fncts.ReadonlyArray scanRight
|
1108
|
+
*/
|
1109
|
+
export function scanRight<A, B>(b: B, f: (a: A, b: B) => B) {
|
1110
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
|
1111
|
+
const l = self.length;
|
1112
|
+
const r = Array(l + 1);
|
1113
|
+
r[l] = b;
|
1114
|
+
for (let i = l - 1; i >= 0; i--) {
|
1115
|
+
r[i] = f(self[i]!, r[i + 1]!);
|
1116
|
+
}
|
1117
|
+
return r;
|
1118
|
+
};
|
1119
|
+
}
|
1120
|
+
|
1121
|
+
/**
|
1122
|
+
* @tsplus pipeable fncts.ReadonlyArray some
|
1123
|
+
*/
|
1124
|
+
export function some<A>(p: Predicate<A>) {
|
1125
|
+
return (self: ReadonlyArray<A>): self is ReadonlyNonEmptyArray<A> => {
|
1126
|
+
let result = false;
|
1127
|
+
let i = 0;
|
1128
|
+
while (!result && i < self.length) {
|
1129
|
+
result = p(self[i]!);
|
1130
|
+
i++;
|
1131
|
+
}
|
1132
|
+
return result;
|
1133
|
+
};
|
1134
|
+
}
|
1135
|
+
|
1136
|
+
/**
|
1137
|
+
* @tsplus pipeable fncts.ReadonlyArray sort
|
1138
|
+
*/
|
1139
|
+
export function sort<A>(/** @tsplus auto */ O: P.Ord<A>) {
|
1140
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1141
|
+
return self.isEmpty() || self.length === 1 ? self : self.slice().sort((a, b) => O.compare(b)(a));
|
1142
|
+
};
|
1143
|
+
}
|
1144
|
+
|
1145
|
+
/**
|
1146
|
+
* @tsplus pipeable fncts.ReadonlyArray sortBy
|
1147
|
+
*/
|
1148
|
+
export function sortBy<A>(Os: ReadonlyArray<P.Ord<A>>) {
|
1149
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1150
|
+
return self.sort(Os.fold(P.Ord.getMonoid()));
|
1151
|
+
};
|
1152
|
+
}
|
1153
|
+
|
1154
|
+
/**
|
1155
|
+
* @tsplus pipeable fncts.ReadonlyArray spanIndexLeft
|
1156
|
+
*/
|
1157
|
+
export function spanIndexLeft<A>(p: Predicate<A>) {
|
1158
|
+
return (self: ReadonlyArray<A>): number => {
|
1159
|
+
const l = self.length;
|
1160
|
+
let i = 0;
|
1161
|
+
for (; i < l; i++) {
|
1162
|
+
if (!p(self[i]!)) {
|
1163
|
+
break;
|
1164
|
+
}
|
1165
|
+
}
|
1166
|
+
return i;
|
1167
|
+
};
|
1168
|
+
}
|
1169
|
+
/**
|
1170
|
+
* @tsplus pipeable fncts.ReadonlyArray spanIndexRight
|
1171
|
+
*/
|
1172
|
+
export function spanIndexRight<A>(predicate: Predicate<A>) {
|
1173
|
+
return (as: ReadonlyArray<A>): number => {
|
1174
|
+
let i = as.length - 1;
|
1175
|
+
for (; i >= 0; i--) {
|
1176
|
+
if (!predicate(as[i]!)) {
|
1177
|
+
break;
|
1178
|
+
}
|
1179
|
+
}
|
1180
|
+
return i;
|
1181
|
+
};
|
1182
|
+
}
|
1183
|
+
/**
|
1184
|
+
* @tsplus pipeable fncts.ReadonlyArray spanLeft
|
1185
|
+
*/
|
1186
|
+
export function spanLeft<A, B extends A>(
|
1187
|
+
p: Refinement<A, B>,
|
1188
|
+
): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<B>, ReadonlyArray<A>];
|
1189
|
+
export function spanLeft<A>(p: Predicate<A>): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<A>];
|
1190
|
+
export function spanLeft<A>(p: Predicate<A>) {
|
1191
|
+
return (self: ReadonlyArray<A>): readonly [ReadonlyArray<A>, ReadonlyArray<A>] => {
|
1192
|
+
const i = self.spanIndexLeft(p);
|
1193
|
+
const init = Array<A>(i);
|
1194
|
+
for (let j = 0; j < i; j++) {
|
1195
|
+
init[j] = self[j]!;
|
1196
|
+
}
|
1197
|
+
const l = self.length;
|
1198
|
+
const rest = Array<A>(l - i);
|
1199
|
+
for (let j = i; j < l; j++) {
|
1200
|
+
rest[j - i] = self[j]!;
|
1201
|
+
}
|
1202
|
+
return [init, rest];
|
1203
|
+
};
|
1204
|
+
}
|
1205
|
+
/**
|
1206
|
+
* @tsplus pipeable fncts.ReadonlyArray spanRight
|
1207
|
+
*/
|
1208
|
+
export function spanRight<A, B extends A>(
|
1209
|
+
p: Refinement<A, B>,
|
1210
|
+
): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<B>];
|
1211
|
+
export function spanRight<A>(
|
1212
|
+
p: Predicate<A>,
|
1213
|
+
): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<A>];
|
1214
|
+
export function spanRight<A>(p: Predicate<A>) {
|
1215
|
+
return (self: ReadonlyArray<A>): readonly [ReadonlyArray<A>, ReadonlyArray<A>] => {
|
1216
|
+
const i = self.spanIndexRight(p);
|
1217
|
+
const l = self.length;
|
1218
|
+
const tail = Array<A>(l - i - 1);
|
1219
|
+
for (let j = l - 1; j > i; j--) {
|
1220
|
+
tail[j - i - 1] = self[j]!;
|
1221
|
+
}
|
1222
|
+
const rest = Array<A>(i);
|
1223
|
+
for (let j = i; j >= 0; j--) {
|
1224
|
+
rest[j] = self[j]!;
|
1225
|
+
}
|
1226
|
+
return [rest, tail];
|
1227
|
+
};
|
1228
|
+
}
|
1229
|
+
|
1230
|
+
/**
|
1231
|
+
* @tsplus getter fncts.ReadonlyArray tail
|
1232
|
+
*/
|
1233
|
+
export function tail<A>(self: ReadonlyArray<A>): Maybe<ReadonlyArray<A>> {
|
1234
|
+
return self.isNonEmpty() ? Just(self.slice(1)) : Nothing();
|
1235
|
+
}
|
1236
|
+
|
1237
|
+
/**
|
1238
|
+
* @tsplus pipeable fncts.ReadonlyArray take
|
1239
|
+
*/
|
1240
|
+
export function take(n: number) {
|
1241
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1242
|
+
return self.slice(0, n);
|
1243
|
+
};
|
1244
|
+
}
|
1245
|
+
|
1246
|
+
/**
|
1247
|
+
* @tsplus pipeable fncts.ReadonlyArray takeLast
|
1248
|
+
*/
|
1249
|
+
export function takeLast(n: number) {
|
1250
|
+
return <A>(as: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1251
|
+
return isEmpty(as) ? [] : as.slice(-n);
|
1252
|
+
};
|
1253
|
+
}
|
1254
|
+
|
1255
|
+
/**
|
1256
|
+
* @tsplus pipeable fncts.ReadonlyArray takeWhile
|
1257
|
+
*/
|
1258
|
+
export function takeWhile<A, B extends A>(p: Refinement<A, B>): (self: ReadonlyArray<A>) => ReadonlyArray<B>;
|
1259
|
+
export function takeWhile<A>(p: Predicate<A>): (self: ReadonlyArray<A>) => ReadonlyArray<A>;
|
1260
|
+
export function takeWhile<A>(p: Predicate<A>) {
|
1261
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1262
|
+
const i = self.spanIndexLeft(p);
|
1263
|
+
const init = Array<A>(i);
|
1264
|
+
for (let j = 0; j < i; j++) {
|
1265
|
+
init[j] = self[j]!;
|
1266
|
+
}
|
1267
|
+
return init;
|
1268
|
+
};
|
1269
|
+
}
|
1270
|
+
|
1271
|
+
/**
|
1272
|
+
* @tsplus getter fncts.ReadonlyArray traverse
|
1273
|
+
*/
|
1274
|
+
export function traverse_<A>(
|
1275
|
+
self: ReadonlyArray<A>,
|
1276
|
+
): <G extends HKT, GC = HKT.None>(
|
1277
|
+
G: P.Applicative<G, GC>,
|
1278
|
+
) => <K, Q, W, X, I, S, R, E, B>(
|
1279
|
+
f: (a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, B>,
|
1280
|
+
) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, ReadonlyArray<B>> {
|
1281
|
+
return (G) => (f) => self.traverseWithIndex(G)((_, a) => f(a));
|
1282
|
+
}
|
1283
|
+
|
1284
|
+
/**
|
1285
|
+
* @tsplus getter fncts.ReadonlyArray traverseWithIndex
|
1286
|
+
*/
|
1287
|
+
export function traverseWithIndex_<A>(
|
1288
|
+
self: ReadonlyArray<A>,
|
1289
|
+
): <G extends HKT, GC = HKT.None>(
|
1290
|
+
G: P.Applicative<G, GC>,
|
1291
|
+
) => <K, Q, W, X, I, S, R, E, B>(
|
1292
|
+
f: (i: number, a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, B>,
|
1293
|
+
) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, ReadonlyArray<B>>;
|
1294
|
+
export function traverseWithIndex_<A>(
|
1295
|
+
self: ReadonlyArray<A>,
|
1296
|
+
): <G>(G: P.Applicative<HKT.F<G>>) => <B>(f: (i: number, a: A) => HKT.FK1<G, B>) => HKT.FK1<G, ReadonlyArray<B>> {
|
1297
|
+
return (G) => (f) =>
|
1298
|
+
self.foldLeftWithIndex(G.pure(Array.empty()), (i, fbs, a) =>
|
1299
|
+
pipe(
|
1300
|
+
fbs,
|
1301
|
+
G.zipWith(f(i, a), (bs, b) => bs.append(b)),
|
1302
|
+
),
|
1303
|
+
);
|
1304
|
+
}
|
1305
|
+
|
1306
|
+
export const traverseWithIndex: P.TraversableWithIndex<ReadonlyArrayF>["traverseWithIndex"] = (G) => (f) => (self) =>
|
1307
|
+
self.traverseWithIndex(G)(f);
|
1308
|
+
|
1309
|
+
export const traverse: P.Traversable<ReadonlyArrayF>["traverse"] = (G) => (f) => (self) =>
|
1310
|
+
self.traverseWithIndex(G)((_, a) => f(a));
|
1311
|
+
|
1312
|
+
/**
|
1313
|
+
* @tsplus pipeable fncts.ReadonlyArray union
|
1314
|
+
*/
|
1315
|
+
export function union<A>(that: ReadonlyArray<A>, /** @tsplus auto */ E: P.Eq<A>) {
|
1316
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1317
|
+
return self.concat(that.filter((a) => !self.elem(a, E)));
|
1318
|
+
};
|
1319
|
+
}
|
1320
|
+
|
1321
|
+
/**
|
1322
|
+
* @tsplus pipeable fncts.ReadonlyArray uniq
|
1323
|
+
*/
|
1324
|
+
export function uniq<A>(/** @tsplus auto */ E: P.Eq<A>) {
|
1325
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1326
|
+
if (self.length === 1) {
|
1327
|
+
return self;
|
1328
|
+
}
|
1329
|
+
const out = [] as Array<A>;
|
1330
|
+
const len = self.length;
|
1331
|
+
for (let i = 0; i < len; i++) {
|
1332
|
+
const a = self[i]!;
|
1333
|
+
if (!out.elem(a, E)) {
|
1334
|
+
out.push(a);
|
1335
|
+
}
|
1336
|
+
}
|
1337
|
+
return out;
|
1338
|
+
};
|
1339
|
+
}
|
1340
|
+
|
1341
|
+
/**
|
1342
|
+
* @tsplus getter fncts.ReadonlyArray unprepend
|
1343
|
+
*/
|
1344
|
+
export function unprepend<A>(self: ReadonlyArray<A>): Maybe<readonly [A, ReadonlyArray<A>]> {
|
1345
|
+
return self.isNonEmpty() ? Just([self[0]!, self.slice(1)]) : Nothing();
|
1346
|
+
}
|
1347
|
+
|
1348
|
+
/**
|
1349
|
+
* @tsplus getter fncts.ReadonlyArray unsafeAsMutable
|
1350
|
+
*/
|
1351
|
+
export function unsafeAsMutable<A>(self: ReadonlyArray<A>): Array<A> {
|
1352
|
+
return self as Array<A>;
|
1353
|
+
}
|
1354
|
+
|
1355
|
+
/**
|
1356
|
+
* @tsplus pipeable fncts.ReadonlyArray unsafeDeleteAt
|
1357
|
+
*/
|
1358
|
+
export function unsafeDeleteAt(i: number) {
|
1359
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1360
|
+
return self.mutate((xs) => {
|
1361
|
+
xs.splice(i, 1);
|
1362
|
+
});
|
1363
|
+
};
|
1364
|
+
}
|
1365
|
+
|
1366
|
+
/**
|
1367
|
+
* @tsplus pipeable fncts.ReadonlyArray unsafeInsertAt
|
1368
|
+
*/
|
1369
|
+
export function unsafeInsertAt<A>(i: number, a: A) {
|
1370
|
+
return (as: ReadonlyArray<A>): ReadonlyNonEmptyArray<A> => {
|
1371
|
+
return as.mutate((xs) => {
|
1372
|
+
xs.splice(i, 0, a);
|
1373
|
+
}) as unknown as ReadonlyNonEmptyArray<A>;
|
1374
|
+
};
|
1375
|
+
}
|
1376
|
+
|
1377
|
+
/**
|
1378
|
+
* @tsplus pipeable fncts.ReadonlyArray unsafeModifyAt
|
1379
|
+
*/
|
1380
|
+
export function unsafeModifyAt<A>(i: number, f: (a: A) => A) {
|
1381
|
+
return (as: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1382
|
+
const next = f(as[i]!);
|
1383
|
+
if (as[i] === next) {
|
1384
|
+
return as;
|
1385
|
+
}
|
1386
|
+
return as.mutate((xs) => {
|
1387
|
+
xs[i] = next;
|
1388
|
+
});
|
1389
|
+
};
|
1390
|
+
}
|
1391
|
+
|
1392
|
+
/**
|
1393
|
+
* @tsplus pipeable fncts.ReadonlyArray unsafeUpdateAt
|
1394
|
+
*/
|
1395
|
+
export function unsafeUpdateAt<A>(i: number, a: A) {
|
1396
|
+
return (as: ReadonlyArray<A>): ReadonlyArray<A> => {
|
1397
|
+
if (as[i] === a) {
|
1398
|
+
return as;
|
1399
|
+
} else {
|
1400
|
+
return as.mutate((xs) => {
|
1401
|
+
xs[i] = a;
|
1402
|
+
});
|
1403
|
+
}
|
1404
|
+
};
|
1405
|
+
}
|
1406
|
+
|
1407
|
+
/**
|
1408
|
+
* @tsplus getter fncts.ReadonlyArray unzip
|
1409
|
+
*/
|
1410
|
+
export function unzip<A, B>(self: ReadonlyArray<readonly [A, B]>): readonly [ReadonlyArray<A>, ReadonlyArray<B>] {
|
1411
|
+
const fa = Array<A>(self.length);
|
1412
|
+
const fb = Array<B>(self.length);
|
1413
|
+
|
1414
|
+
for (let i = 0; i < self.length; i++) {
|
1415
|
+
fa[i] = self[i]![0]!;
|
1416
|
+
fb[i] = self[i]![1]!;
|
1417
|
+
}
|
1418
|
+
|
1419
|
+
return [fa, fb];
|
1420
|
+
}
|
1421
|
+
|
1422
|
+
/**
|
1423
|
+
* @tsplus pipeable fncts.ReadonlyArray updateAt
|
1424
|
+
*/
|
1425
|
+
export function updateAt<A>(i: number, a: A) {
|
1426
|
+
return (as: ReadonlyArray<A>): Maybe<ReadonlyArray<A>> => {
|
1427
|
+
return as.isOutOfBound(i) ? Nothing() : Just(as.unsafeUpdateAt(i, a));
|
1428
|
+
};
|
1429
|
+
}
|
1430
|
+
|
1431
|
+
/**
|
1432
|
+
* @tsplus getter fncts.ReadonlyArray wilt
|
1433
|
+
*/
|
1434
|
+
export function wilt_<A>(self: ReadonlyArray<A>) {
|
1435
|
+
return <G extends HKT, GC = HKT.None>(G: P.Applicative<G, GC>) =>
|
1436
|
+
<K, Q, W, X, I, S, R, E, B, B2>(
|
1437
|
+
f: (a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, Either<B, B2>>,
|
1438
|
+
): HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, readonly [ReadonlyArray<B>, ReadonlyArray<B2>]> =>
|
1439
|
+
self.wiltWithIndex(G)((_, a) => f(a));
|
1440
|
+
}
|
1441
|
+
|
1442
|
+
/**
|
1443
|
+
* @tsplus getter fncts.ReadonlyArray wiltWithIndex
|
1444
|
+
*/
|
1445
|
+
export function wiltWithIndex_<A>(self: ReadonlyArray<A>) {
|
1446
|
+
return <G extends HKT, GC = HKT.None>(G: P.Applicative<G, GC>) =>
|
1447
|
+
<K, Q, W, X, I, S, R, E, B, B2>(
|
1448
|
+
f: (i: number, a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, Either<B, B2>>,
|
1449
|
+
): HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, readonly [ReadonlyArray<B>, ReadonlyArray<B2>]> =>
|
1450
|
+
self
|
1451
|
+
.foldLeftWithIndex(G.pure([[] as Array<B>, [] as Array<B2>] as const), (i, fbs, a) =>
|
1452
|
+
f(i, a).pipe(
|
1453
|
+
G.zipWith(fbs, (eb, r) =>
|
1454
|
+
eb.match(
|
1455
|
+
(b1) => {
|
1456
|
+
r[0].push(b1);
|
1457
|
+
return r;
|
1458
|
+
},
|
1459
|
+
(b2) => {
|
1460
|
+
r[1].push(b2);
|
1461
|
+
return r;
|
1462
|
+
},
|
1463
|
+
),
|
1464
|
+
),
|
1465
|
+
),
|
1466
|
+
)
|
1467
|
+
.pipe(G.map(([b1s, b2s]) => [b1s, b2s]));
|
1468
|
+
}
|
1469
|
+
|
1470
|
+
/**
|
1471
|
+
* @tsplus getter fncts.ReadonlyArray wither
|
1472
|
+
*/
|
1473
|
+
export function wither_<A>(self: ReadonlyArray<A>) {
|
1474
|
+
return <G extends HKT, GC = HKT.None>(G: P.Applicative<G, GC>) =>
|
1475
|
+
<K, Q, W, X, I, S, R, E, B>(
|
1476
|
+
f: (a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, Maybe<B>>,
|
1477
|
+
): HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, ReadonlyArray<B>> =>
|
1478
|
+
self.witherWithIndex(G)((_, a) => f(a));
|
1479
|
+
}
|
1480
|
+
|
1481
|
+
/**
|
1482
|
+
* @tsplus getter fncts.ReadonlyArray witherWithIndex
|
1483
|
+
*/
|
1484
|
+
export function witherWithIndex_<A>(self: ReadonlyArray<A>) {
|
1485
|
+
return <G extends HKT, GC = HKT.None>(G: P.Applicative<G, GC>) =>
|
1486
|
+
<K, Q, W, X, I, S, R, E, B>(
|
1487
|
+
f: (i: number, a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, Maybe<B>>,
|
1488
|
+
): HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, ReadonlyArray<B>> =>
|
1489
|
+
self
|
1490
|
+
.foldLeftWithIndex(G.pure([] as Array<B>), (i, b, a) =>
|
1491
|
+
f(i, a).pipe(
|
1492
|
+
G.zipWith(b, (maybeB, bs) => {
|
1493
|
+
if (maybeB.isJust()) {
|
1494
|
+
bs.push(maybeB.value);
|
1495
|
+
}
|
1496
|
+
return bs;
|
1497
|
+
}),
|
1498
|
+
),
|
1499
|
+
)
|
1500
|
+
.pipe(G.map((bs) => bs));
|
1501
|
+
}
|
1502
|
+
|
1503
|
+
export const wiltWithIndex: P.WitherableWithIndex<ReadonlyArrayF>["wiltWithIndex"] = (G) => (f) => (self) =>
|
1504
|
+
self.wiltWithIndex(G)(f);
|
1505
|
+
|
1506
|
+
export const wilt: P.WitherableWithIndex<ReadonlyArrayF>["wilt"] = (G) => (f) => (self) =>
|
1507
|
+
self.wiltWithIndex(G)((_, a) => f(a));
|
1508
|
+
|
1509
|
+
export const witherWithIndex: P.WitherableWithIndex<ReadonlyArrayF>["witherWithIndex"] = (G) => (f) => (self) =>
|
1510
|
+
self.witherWithIndex(G)(f);
|
1511
|
+
|
1512
|
+
export const wither: P.Witherable<ReadonlyArrayF>["wither"] = (G) => (f) => (self) =>
|
1513
|
+
self.witherWithIndex(G)((_, a) => f(a));
|
1514
|
+
|
1515
|
+
/**
|
1516
|
+
* @tsplus pipeable fncts.ReadonlyArray zip
|
1517
|
+
*/
|
1518
|
+
export function zip<B>(that: ReadonlyArray<B>) {
|
1519
|
+
return <A>(self: ReadonlyArray<A>): ReadonlyArray<readonly [A, B]> => {
|
1520
|
+
return self.zipWith(that, tuple);
|
1521
|
+
};
|
1522
|
+
}
|
1523
|
+
|
1524
|
+
/**
|
1525
|
+
* @tsplus pipeable fncts.ReadonlyArray zipWith
|
1526
|
+
*/
|
1527
|
+
export function zipWith<A, B, C>(fb: ReadonlyArray<B>, f: (a: A, b: B) => C) {
|
1528
|
+
return (self: ReadonlyArray<A>): ReadonlyArray<C> => {
|
1529
|
+
const len = Math.min(self.length, fb.length);
|
1530
|
+
const fc = Array<C>(len);
|
1531
|
+
for (let i = 0; i < len; i++) {
|
1532
|
+
fc[i] = f(self[i]!, fb[i]!);
|
1533
|
+
}
|
1534
|
+
return fc;
|
1535
|
+
};
|
1536
|
+
}
|