@fncts/base 0.0.20 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_cjs/collection/Iterable/api/traverseConc.cjs +8 -8
- package/_cjs/collection/Iterable/api/traverseConc.cjs.map +1 -1
- package/_cjs/collection/Iterable/api.cjs +497 -444
- package/_cjs/collection/Iterable/api.cjs.map +1 -1
- package/_cjs/collection/Iterable/constructors.cjs +7 -7
- package/_cjs/collection/Iterable/constructors.cjs.map +1 -1
- package/_cjs/collection/compat/Array/api.cjs +16 -12
- package/_cjs/collection/compat/Array/api.cjs.map +1 -1
- package/_cjs/collection/compat/Array/derivations.cjs +41 -19
- package/_cjs/collection/compat/Array/derivations.cjs.map +1 -1
- package/_cjs/collection/compat/ArrayLike/api.cjs +1 -1
- package/_cjs/collection/compat/ArrayLike/api.cjs.map +1 -1
- package/_cjs/collection/compat/Record/instances.cjs +39 -3
- package/_cjs/collection/compat/Record/instances.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/api/makeBy.cjs +1 -1
- package/_cjs/collection/immutable/Conc/api/makeBy.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/api.cjs +866 -765
- package/_cjs/collection/immutable/Conc/api.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/definition.cjs +55 -53
- package/_cjs/collection/immutable/Conc/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/derivations.cjs +13 -2
- package/_cjs/collection/immutable/Conc/derivations.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc.cjs.map +1 -1
- package/_cjs/collection/immutable/Dictionary/api.cjs +57 -44
- package/_cjs/collection/immutable/Dictionary/api.cjs.map +1 -1
- package/_cjs/collection/immutable/HashMap/api.cjs +351 -258
- package/_cjs/collection/immutable/HashMap/api.cjs.map +1 -1
- package/_cjs/collection/immutable/HashMap/definition.cjs +1 -1
- package/_cjs/collection/immutable/HashMap/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/HashMap/internal.cjs.map +1 -1
- package/_cjs/collection/immutable/HashSet/api.cjs +230 -192
- package/_cjs/collection/immutable/HashSet/api.cjs.map +1 -1
- package/_cjs/collection/immutable/HashSet/definition.cjs +1 -1
- package/_cjs/collection/immutable/HashSet/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableArray/api/chunksOf.cjs +6 -4
- package/_cjs/collection/immutable/ImmutableArray/api/chunksOf.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableArray/api/slice.cjs +6 -4
- package/_cjs/collection/immutable/ImmutableArray/api/slice.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableArray/api/splitAt.cjs +6 -4
- package/_cjs/collection/immutable/ImmutableArray/api/splitAt.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableArray/api/splitWhere.cjs +15 -13
- package/_cjs/collection/immutable/ImmutableArray/api/splitWhere.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableArray/api.cjs +943 -749
- package/_cjs/collection/immutable/ImmutableArray/api.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableArray/derivations.cjs +12 -1
- package/_cjs/collection/immutable/ImmutableArray/derivations.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableArray/instances.cjs +33 -33
- package/_cjs/collection/immutable/ImmutableArray/instances.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableArray.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs +338 -273
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/constructors.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/derivations.cjs +15 -4
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/derivations.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/destructors.cjs +2 -2
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/destructors.cjs.map +1 -1
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs +12 -12
- package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs.map +1 -1
- package/_cjs/collection/immutable/List/api/foldLeft.cjs +12 -10
- package/_cjs/collection/immutable/List/api/foldLeft.cjs.map +1 -1
- package/_cjs/collection/immutable/List/api.cjs +164 -141
- package/_cjs/collection/immutable/List/api.cjs.map +1 -1
- package/_cjs/collection/immutable/List.cjs.map +1 -1
- package/_cjs/collection/immutable/Queue/api.cjs +64 -48
- package/_cjs/collection/immutable/Queue/api.cjs.map +1 -1
- package/_cjs/collection/immutable/Queue/definition.cjs +1 -1
- package/_cjs/collection/immutable/Queue/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/RoseTree/api.cjs +50 -36
- package/_cjs/collection/immutable/RoseTree/api.cjs.map +1 -1
- package/_cjs/collection/immutable/RoseTree/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/SortedMap/api.cjs +408 -368
- package/_cjs/collection/immutable/SortedMap/api.cjs.map +1 -1
- package/_cjs/collection/immutable/Vector/api.cjs +723 -608
- package/_cjs/collection/immutable/Vector/api.cjs.map +1 -1
- package/_cjs/collection/immutable/Vector/definition.cjs +18 -16
- package/_cjs/collection/immutable/Vector/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/Vector/internal.cjs +40 -39
- package/_cjs/collection/immutable/Vector/internal.cjs.map +1 -1
- package/_cjs/collection/mutable/HashMap.cjs +3 -5
- package/_cjs/collection/mutable/HashMap.cjs.map +1 -1
- package/_cjs/collection/mutable/HashSet.cjs.map +1 -1
- package/_cjs/collection/mutable/ListBuffer.cjs +2 -2
- package/_cjs/collection/mutable/ListBuffer.cjs.map +1 -1
- package/_cjs/collection/mutable/internal.cjs +0 -2
- package/_cjs/collection/mutable/internal.cjs.map +1 -1
- package/_cjs/collection/weak/IterableWeakMap.cjs +7 -7
- package/_cjs/collection/weak/IterableWeakMap.cjs.map +1 -1
- package/_cjs/collection/weak/IterableWeakSet.cjs +7 -7
- package/_cjs/collection/weak/IterableWeakSet.cjs.map +1 -1
- package/_cjs/control/Eval/api.cjs +55 -43
- package/_cjs/control/Eval/api.cjs.map +1 -1
- package/_cjs/control/Eval/instance.cjs +4 -4
- package/_cjs/control/Eval/instance.cjs.map +1 -1
- package/_cjs/control/Eval/run.cjs +1 -1
- package/_cjs/control/Eval/run.cjs.map +1 -1
- package/_cjs/control/Z/api.cjs +241 -172
- package/_cjs/control/Z/api.cjs.map +1 -1
- package/_cjs/control/Z/instances.cjs +3 -3
- package/_cjs/control/Z/instances.cjs.map +1 -1
- package/_cjs/control/Z/runtime.cjs +250 -241
- package/_cjs/control/Z/runtime.cjs.map +1 -1
- package/_cjs/data/Branded/definition.cjs.map +1 -1
- package/_cjs/data/Branded/derivations.cjs +3 -3
- package/_cjs/data/Branded/derivations.cjs.map +1 -1
- package/_cjs/data/CaseClass.cjs.map +1 -1
- package/_cjs/data/Cause/api/fold.cjs +20 -18
- package/_cjs/data/Cause/api/fold.cjs.map +1 -1
- package/_cjs/data/Cause/api/isEmpty.cjs +1 -1
- package/_cjs/data/Cause/api/isEmpty.cjs.map +1 -1
- package/_cjs/data/Cause/api/linearize.cjs +8 -8
- package/_cjs/data/Cause/api/linearize.cjs.map +1 -1
- package/_cjs/data/Cause/api/prettyPrint.cjs +1 -1
- package/_cjs/data/Cause/api/prettyPrint.cjs.map +1 -1
- package/_cjs/data/Cause/api.cjs +160 -140
- package/_cjs/data/Cause/api.cjs.map +1 -1
- package/_cjs/data/Cause/definition.cjs +18 -18
- package/_cjs/data/Cause/definition.cjs.map +1 -1
- package/_cjs/data/Cause.cjs.map +1 -1
- package/_cjs/data/Const/api.cjs +8 -6
- package/_cjs/data/Const/api.cjs.map +1 -1
- package/_cjs/data/Const/instances.cjs +4 -4
- package/_cjs/data/Const/instances.cjs.map +1 -1
- package/_cjs/data/Datum/api.cjs +219 -176
- package/_cjs/data/Datum/api.cjs.map +1 -1
- package/_cjs/data/Datum/definition.cjs.map +1 -1
- package/_cjs/data/DatumEither/api.cjs +165 -133
- package/_cjs/data/DatumEither/api.cjs.map +1 -1
- package/_cjs/data/DecodeError/definition.cjs +14 -14
- package/_cjs/data/DecodeError/definition.cjs.map +1 -1
- package/_cjs/data/Decoder/api.cjs +9 -7
- package/_cjs/data/Decoder/api.cjs.map +1 -1
- package/_cjs/data/Duration/api.cjs +18 -12
- package/_cjs/data/Duration/api.cjs.map +1 -1
- package/_cjs/data/Either/api/align.cjs +8 -3
- package/_cjs/data/Either/api/align.cjs.map +1 -1
- package/_cjs/data/Either/api/alignWith.cjs +14 -12
- package/_cjs/data/Either/api/alignWith.cjs.map +1 -1
- package/_cjs/data/Either/api.cjs +206 -169
- package/_cjs/data/Either/api.cjs.map +1 -1
- package/_cjs/data/Either/constructors.cjs +11 -9
- package/_cjs/data/Either/constructors.cjs.map +1 -1
- package/_cjs/data/Either/destructors.cjs +16 -14
- package/_cjs/data/Either/destructors.cjs.map +1 -1
- package/_cjs/data/Either/instances.cjs +8 -8
- package/_cjs/data/Either/instances.cjs.map +1 -1
- package/_cjs/data/EitherT/api.cjs +8 -8
- package/_cjs/data/EitherT/api.cjs.map +1 -1
- package/_cjs/data/Encoder/api.cjs +134 -0
- package/_cjs/data/Encoder/api.cjs.map +1 -0
- package/_cjs/data/Encoder/definition.cjs +25 -0
- package/_cjs/data/Encoder/definition.cjs.map +1 -0
- package/_cjs/data/Encoder.cjs +32 -0
- package/_cjs/data/Encoder.cjs.map +1 -0
- package/_cjs/data/Environment/api.cjs +45 -33
- package/_cjs/data/Environment/api.cjs.map +1 -1
- package/_cjs/data/EnvironmentPatch.cjs +17 -13
- package/_cjs/data/EnvironmentPatch.cjs.map +1 -1
- package/_cjs/data/ExecutionStrategy.cjs +21 -29
- package/_cjs/data/ExecutionStrategy.cjs.map +1 -1
- package/_cjs/data/Exit/api.cjs +159 -127
- package/_cjs/data/Exit/api.cjs.map +1 -1
- package/_cjs/data/Exit/constructors.cjs +4 -4
- package/_cjs/data/Exit/constructors.cjs.map +1 -1
- package/_cjs/data/FiberId/api.cjs +23 -21
- package/_cjs/data/FiberId/api.cjs.map +1 -1
- package/_cjs/data/FiberId/constructors.cjs.map +1 -1
- package/_cjs/data/Identity/api.cjs +26 -18
- package/_cjs/data/Identity/api.cjs.map +1 -1
- package/_cjs/data/Identity/instances.cjs +3 -3
- package/_cjs/data/Identity/instances.cjs.map +1 -1
- package/_cjs/data/Interval.cjs +43 -33
- package/_cjs/data/Interval.cjs.map +1 -1
- package/_cjs/data/Intervals.cjs +35 -27
- package/_cjs/data/Intervals.cjs.map +1 -1
- package/_cjs/data/Maybe/api.cjs +160 -125
- package/_cjs/data/Maybe/api.cjs.map +1 -1
- package/_cjs/data/Maybe/constructors.cjs +2 -2
- package/_cjs/data/Maybe/constructors.cjs.map +1 -1
- package/_cjs/data/Maybe/definition.cjs.map +1 -1
- package/_cjs/data/Maybe/destructors.cjs +9 -7
- package/_cjs/data/Maybe/destructors.cjs.map +1 -1
- package/_cjs/data/Maybe/instances.cjs +11 -11
- package/_cjs/data/Maybe/instances.cjs.map +1 -1
- package/_cjs/data/Predicate/api.cjs +10 -8
- package/_cjs/data/Predicate/api.cjs.map +1 -1
- package/_cjs/data/Refinement/api.cjs +15 -9
- package/_cjs/data/Refinement/api.cjs.map +1 -1
- package/_cjs/data/Struct/api.cjs +62 -50
- package/_cjs/data/Struct/api.cjs.map +1 -1
- package/_cjs/data/Tag/constructors.cjs +3 -2
- package/_cjs/data/Tag/constructors.cjs.map +1 -1
- package/_cjs/data/Tag/definition.cjs +0 -3
- package/_cjs/data/Tag/definition.cjs.map +1 -1
- package/_cjs/data/These/api.cjs +188 -170
- package/_cjs/data/These/api.cjs.map +1 -1
- package/_cjs/data/These/constructors.cjs +1 -1
- package/_cjs/data/These/constructors.cjs.map +1 -1
- package/_cjs/data/These/destructors.cjs +39 -35
- package/_cjs/data/These/destructors.cjs.map +1 -1
- package/_cjs/data/These/instances.cjs +1 -1
- package/_cjs/data/These/instances.cjs.map +1 -1
- package/_cjs/data/Trace/api.cjs +7 -5
- package/_cjs/data/Trace/api.cjs.map +1 -1
- package/_cjs/data/Zipped.cjs.map +1 -1
- package/_cjs/data/function/api.cjs +6 -4
- package/_cjs/data/function/api.cjs.map +1 -1
- package/_cjs/data/function/pipe.cjs +9 -0
- package/_cjs/data/function/pipe.cjs.map +1 -1
- package/_cjs/data/string/api.cjs +53 -96
- package/_cjs/data/string/api.cjs.map +1 -1
- package/_cjs/global/api.cjs +4 -2
- package/_cjs/global/api.cjs.map +1 -1
- package/_cjs/internal/AtomicBoolean.cjs.map +1 -1
- package/_cjs/internal/AtomicNumber.cjs.map +1 -1
- package/_cjs/internal/AtomicReference.cjs.map +1 -1
- package/_cjs/internal/Stack.cjs +2 -2
- package/_cjs/internal/Stack.cjs.map +1 -1
- package/_cjs/optics/At/api.cjs +1 -1
- package/_cjs/optics/At/api.cjs.map +1 -1
- package/_cjs/optics/At/definition.cjs +2 -2
- package/_cjs/optics/At/definition.cjs.map +1 -1
- package/_cjs/optics/Fold/definition.cjs +3 -4
- package/_cjs/optics/Fold/definition.cjs.map +1 -1
- package/_cjs/optics/Getter/definition.cjs +2 -3
- package/_cjs/optics/Getter/definition.cjs.map +1 -1
- package/_cjs/optics/Index/api.cjs +4 -4
- package/_cjs/optics/Index/api.cjs.map +1 -1
- package/_cjs/optics/Index/definition.cjs +2 -2
- package/_cjs/optics/Index/definition.cjs.map +1 -1
- package/_cjs/optics/Iso/api.cjs +9 -7
- package/_cjs/optics/Iso/api.cjs.map +1 -1
- package/_cjs/optics/Iso/definition.cjs +12 -12
- package/_cjs/optics/Iso/definition.cjs.map +1 -1
- package/_cjs/optics/Lens/api.cjs +54 -44
- package/_cjs/optics/Lens/api.cjs.map +1 -1
- package/_cjs/optics/Lens/definition.cjs +10 -10
- package/_cjs/optics/Lens/definition.cjs.map +1 -1
- package/_cjs/optics/Optional/api/compose.cjs +9 -7
- package/_cjs/optics/Optional/api/compose.cjs.map +1 -1
- package/_cjs/optics/Optional/definition.cjs +12 -13
- package/_cjs/optics/Optional/definition.cjs.map +1 -1
- package/_cjs/optics/Optional.cjs.map +1 -1
- package/_cjs/optics/Prism/api/compose.cjs +9 -7
- package/_cjs/optics/Prism/api/compose.cjs.map +1 -1
- package/_cjs/optics/Prism/api/fromNullable.cjs +2 -2
- package/_cjs/optics/Prism/api/fromNullable.cjs.map +1 -1
- package/_cjs/optics/Prism/api/just.cjs +2 -2
- package/_cjs/optics/Prism/api/just.cjs.map +1 -1
- package/_cjs/optics/Prism/definition.cjs +9 -9
- package/_cjs/optics/Prism/definition.cjs.map +1 -1
- package/_cjs/optics/Prism.cjs.map +1 -1
- package/_cjs/optics/Setter/definition.cjs +8 -13
- package/_cjs/optics/Setter/definition.cjs.map +1 -1
- package/_cjs/optics/Traversal/api/compose.cjs +8 -6
- package/_cjs/optics/Traversal/api/compose.cjs.map +1 -1
- package/_cjs/optics/Traversal/api/fromTraversable.cjs +2 -2
- package/_cjs/optics/Traversal/api/fromTraversable.cjs.map +1 -1
- package/_cjs/optics/Traversal/definition.cjs +12 -12
- package/_cjs/optics/Traversal/definition.cjs.map +1 -1
- package/_cjs/optics/Traversal.cjs.map +1 -1
- package/_cjs/typeclass/Align.cjs.map +1 -1
- package/_cjs/typeclass/Alt.cjs.map +1 -1
- package/_cjs/typeclass/Applicative.cjs.map +1 -1
- package/_cjs/typeclass/ApplicativeExcept.cjs +5 -10
- package/_cjs/typeclass/ApplicativeExcept.cjs.map +1 -1
- package/_cjs/typeclass/Apply.cjs +8 -8
- package/_cjs/typeclass/Apply.cjs.map +1 -1
- package/_cjs/typeclass/Chain.cjs +4 -4
- package/_cjs/typeclass/Chain.cjs.map +1 -1
- package/_cjs/typeclass/Eq/definition.cjs.map +1 -1
- package/_cjs/typeclass/Eq/derivations.cjs.map +1 -1
- package/_cjs/typeclass/Equatable/api.cjs.map +1 -1
- package/_cjs/typeclass/Equatable/definition.cjs.map +1 -1
- package/_cjs/typeclass/Equatable/fast-equals.cjs.map +1 -1
- package/_cjs/typeclass/Filterable.cjs.map +1 -1
- package/_cjs/typeclass/FilterableWithIndex.cjs.map +1 -1
- package/_cjs/typeclass/Foldable.cjs +1 -1
- package/_cjs/typeclass/Foldable.cjs.map +1 -1
- package/_cjs/typeclass/FoldableWithIndex.cjs +1 -1
- package/_cjs/typeclass/FoldableWithIndex.cjs.map +1 -1
- package/_cjs/typeclass/Functor.cjs.map +1 -1
- package/_cjs/typeclass/FunctorWithIndex.cjs.map +1 -1
- package/_cjs/typeclass/Guard/api.cjs +18 -10
- package/_cjs/typeclass/Guard/api.cjs.map +1 -1
- package/_cjs/typeclass/Guard/definition.cjs.map +1 -1
- package/_cjs/typeclass/Guard/derivations.cjs.map +1 -1
- package/_cjs/typeclass/Has.cjs +7 -5
- package/_cjs/typeclass/Has.cjs.map +1 -1
- package/_cjs/typeclass/HashEq.cjs.map +1 -1
- package/_cjs/typeclass/Hashable/definition.cjs.map +1 -1
- package/_cjs/typeclass/Hashable/hash.cjs.map +1 -1
- package/_cjs/typeclass/MonadExcept.cjs +1 -1
- package/_cjs/typeclass/MonadExcept.cjs.map +1 -1
- package/_cjs/typeclass/Ord/api/contramap.cjs +7 -5
- package/_cjs/typeclass/Ord/api/contramap.cjs.map +1 -1
- package/_cjs/typeclass/Ord/api/max.cjs.map +1 -1
- package/_cjs/typeclass/Ord/api/min.cjs.map +1 -1
- package/_cjs/typeclass/Ord/definition.cjs.map +1 -1
- package/_cjs/typeclass/Ord/instances.cjs.map +1 -1
- package/_cjs/typeclass/Ordering.cjs.map +1 -1
- package/_cjs/typeclass/Semialign.cjs +7 -7
- package/_cjs/typeclass/Semialign.cjs.map +1 -1
- package/_cjs/typeclass/Semigroup/api.cjs.map +1 -1
- package/_cjs/typeclass/Semigroup/definition.cjs.map +1 -1
- package/_cjs/typeclass/Semigroup/derivations.cjs.map +1 -1
- package/_cjs/typeclass/Semimonoidal.cjs.map +1 -1
- package/_cjs/typeclass/Showable/definition.cjs.map +1 -1
- package/_cjs/typeclass/Showable/show.cjs +107 -107
- package/_cjs/typeclass/Showable/show.cjs.map +1 -1
- package/_cjs/typeclass/Showable/styles.cjs.map +1 -1
- package/_cjs/typeclass/Showable/util.cjs +1 -1
- package/_cjs/typeclass/Showable/util.cjs.map +1 -1
- package/_cjs/typeclass/Traversable.cjs +1 -2
- package/_cjs/typeclass/Traversable.cjs.map +1 -1
- package/_cjs/typeclass/TraversableWithIndex.cjs.map +1 -1
- package/_cjs/typeclass/Witherable.cjs +3 -1
- package/_cjs/typeclass/Witherable.cjs.map +1 -1
- package/_cjs/typeclass/WitherableWithIndex.cjs +3 -1
- package/_cjs/typeclass/WitherableWithIndex.cjs.map +1 -1
- package/_cjs/util/AnsiFormat.cjs +11 -11
- package/_cjs/util/AnsiFormat.cjs.map +1 -1
- package/_cjs/util/PCGRandom.cjs.map +1 -1
- package/_cjs/util/assert.cjs.map +1 -1
- package/_cjs/util/pattern.cjs.map +1 -1
- package/_cjs/util/predicates.cjs.map +1 -1
- package/_cjs/util/rand/Random.cjs.map +1 -1
- package/_cjs/util/rand/distribution/UniformArrayIntDistribution.cjs.map +1 -1
- package/_cjs/util/rand/distribution/UniformBigIntDistribution.cjs.map +1 -1
- package/_cjs/util/rand/distribution/UniformIntDistribution.cjs.map +1 -1
- package/_cjs/util/rand/distribution/internals/ArrayInt.cjs.map +1 -1
- package/_cjs/util/rand/distribution/internals/UniformArrayIntDistributionInternal.cjs.map +1 -1
- package/_cjs/util/rand/distribution/internals/UniformIntDistributionInternal.cjs.map +1 -1
- package/_cjs/util/rand/generator/MersenneTwister.cjs.map +1 -1
- package/_cjs/util/rand/generator/RandomGenerator.cjs.map +1 -1
- package/_cjs/util/rand.cjs.map +1 -1
- package/_mjs/collection/Iterable/api/traverseConc.mjs +5 -5
- package/_mjs/collection/Iterable/api/traverseConc.mjs.map +1 -1
- package/_mjs/collection/Iterable/api.mjs +465 -411
- package/_mjs/collection/Iterable/api.mjs.map +1 -1
- package/_mjs/collection/Iterable/constructors.mjs +5 -5
- package/_mjs/collection/Iterable/constructors.mjs.map +1 -1
- package/_mjs/collection/compat/Array/api.mjs +16 -12
- package/_mjs/collection/compat/Array/api.mjs.map +1 -1
- package/_mjs/collection/compat/Array/derivations.mjs +35 -19
- package/_mjs/collection/compat/Array/derivations.mjs.map +1 -1
- package/_mjs/collection/compat/ArrayLike/api.mjs +1 -1
- package/_mjs/collection/compat/ArrayLike/api.mjs.map +1 -1
- package/_mjs/collection/compat/Record/instances.mjs +34 -3
- package/_mjs/collection/compat/Record/instances.mjs.map +1 -1
- package/_mjs/collection/immutable/Conc/api/makeBy.mjs +1 -1
- package/_mjs/collection/immutable/Conc/api/makeBy.mjs.map +1 -1
- package/_mjs/collection/immutable/Conc/api.mjs +795 -697
- package/_mjs/collection/immutable/Conc/api.mjs.map +1 -1
- package/_mjs/collection/immutable/Conc/definition.mjs +53 -51
- package/_mjs/collection/immutable/Conc/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/Conc/derivations.mjs +10 -2
- package/_mjs/collection/immutable/Conc/derivations.mjs.map +1 -1
- package/_mjs/collection/immutable/Conc.mjs.map +1 -1
- package/_mjs/collection/immutable/Dictionary/api.mjs +47 -35
- package/_mjs/collection/immutable/Dictionary/api.mjs.map +1 -1
- package/_mjs/collection/immutable/HashMap/api.mjs +295 -217
- package/_mjs/collection/immutable/HashMap/api.mjs.map +1 -1
- package/_mjs/collection/immutable/HashMap/definition.mjs +1 -1
- package/_mjs/collection/immutable/HashMap/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/HashMap/internal.mjs.map +1 -1
- package/_mjs/collection/immutable/HashSet/api.mjs +206 -168
- package/_mjs/collection/immutable/HashSet/api.mjs.map +1 -1
- package/_mjs/collection/immutable/HashSet/definition.mjs +1 -1
- package/_mjs/collection/immutable/HashSet/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableArray/api/chunksOf.mjs +5 -3
- package/_mjs/collection/immutable/ImmutableArray/api/chunksOf.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableArray/api/slice.mjs +5 -3
- package/_mjs/collection/immutable/ImmutableArray/api/slice.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableArray/api/splitAt.mjs +5 -3
- package/_mjs/collection/immutable/ImmutableArray/api/splitAt.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableArray/api/splitWhere.mjs +13 -11
- package/_mjs/collection/immutable/ImmutableArray/api/splitWhere.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableArray/api.mjs +816 -629
- package/_mjs/collection/immutable/ImmutableArray/api.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableArray/derivations.mjs +9 -1
- package/_mjs/collection/immutable/ImmutableArray/derivations.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableArray/instances.mjs +34 -34
- package/_mjs/collection/immutable/ImmutableArray/instances.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableArray.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs +301 -239
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/constructors.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/derivations.mjs +12 -4
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/derivations.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/destructors.mjs +2 -2
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/destructors.mjs.map +1 -1
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs +13 -13
- package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs.map +1 -1
- package/_mjs/collection/immutable/List/api/foldLeft.mjs +11 -9
- package/_mjs/collection/immutable/List/api/foldLeft.mjs.map +1 -1
- package/_mjs/collection/immutable/List/api.mjs +157 -133
- package/_mjs/collection/immutable/List/api.mjs.map +1 -1
- package/_mjs/collection/immutable/List.mjs.map +1 -1
- package/_mjs/collection/immutable/Queue/api.mjs +55 -39
- package/_mjs/collection/immutable/Queue/api.mjs.map +1 -1
- package/_mjs/collection/immutable/Queue/definition.mjs +1 -1
- package/_mjs/collection/immutable/Queue/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/RoseTree/api.mjs +50 -36
- package/_mjs/collection/immutable/RoseTree/api.mjs.map +1 -1
- package/_mjs/collection/immutable/RoseTree/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/SortedMap/api.mjs +398 -358
- package/_mjs/collection/immutable/SortedMap/api.mjs.map +1 -1
- package/_mjs/collection/immutable/Vector/api.mjs +650 -538
- package/_mjs/collection/immutable/Vector/api.mjs.map +1 -1
- package/_mjs/collection/immutable/Vector/definition.mjs +16 -14
- package/_mjs/collection/immutable/Vector/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/Vector/internal.mjs +40 -39
- package/_mjs/collection/immutable/Vector/internal.mjs.map +1 -1
- package/_mjs/collection/mutable/HashMap.mjs +3 -5
- package/_mjs/collection/mutable/HashMap.mjs.map +1 -1
- package/_mjs/collection/mutable/HashSet.mjs.map +1 -1
- package/_mjs/collection/mutable/ListBuffer.mjs +2 -2
- package/_mjs/collection/mutable/ListBuffer.mjs.map +1 -1
- package/_mjs/collection/mutable/internal.mjs +0 -2
- package/_mjs/collection/mutable/internal.mjs.map +1 -1
- package/_mjs/collection/weak/IterableWeakMap.mjs +7 -7
- package/_mjs/collection/weak/IterableWeakMap.mjs.map +1 -1
- package/_mjs/collection/weak/IterableWeakSet.mjs +7 -7
- package/_mjs/collection/weak/IterableWeakSet.mjs.map +1 -1
- package/_mjs/control/Eval/api.mjs +40 -28
- package/_mjs/control/Eval/api.mjs.map +1 -1
- package/_mjs/control/Eval/instance.mjs +5 -5
- package/_mjs/control/Eval/instance.mjs.map +1 -1
- package/_mjs/control/Eval/run.mjs +1 -1
- package/_mjs/control/Eval/run.mjs.map +1 -1
- package/_mjs/control/Z/api.mjs +196 -128
- package/_mjs/control/Z/api.mjs.map +1 -1
- package/_mjs/control/Z/instances.mjs +4 -4
- package/_mjs/control/Z/instances.mjs.map +1 -1
- package/_mjs/control/Z/runtime.mjs +244 -234
- package/_mjs/control/Z/runtime.mjs.map +1 -1
- package/_mjs/data/Branded/definition.mjs.map +1 -1
- package/_mjs/data/Branded/derivations.mjs +3 -3
- package/_mjs/data/Branded/derivations.mjs.map +1 -1
- package/_mjs/data/CaseClass.mjs.map +1 -1
- package/_mjs/data/Cause/api/fold.mjs +19 -17
- package/_mjs/data/Cause/api/fold.mjs.map +1 -1
- package/_mjs/data/Cause/api/isEmpty.mjs +1 -1
- package/_mjs/data/Cause/api/isEmpty.mjs.map +1 -1
- package/_mjs/data/Cause/api/linearize.mjs +8 -8
- package/_mjs/data/Cause/api/linearize.mjs.map +1 -1
- package/_mjs/data/Cause/api/prettyPrint.mjs +1 -1
- package/_mjs/data/Cause/api/prettyPrint.mjs.map +1 -1
- package/_mjs/data/Cause/api.mjs +149 -129
- package/_mjs/data/Cause/api.mjs.map +1 -1
- package/_mjs/data/Cause/definition.mjs +18 -18
- package/_mjs/data/Cause/definition.mjs.map +1 -1
- package/_mjs/data/Cause.mjs.map +1 -1
- package/_mjs/data/Const/api.mjs +6 -4
- package/_mjs/data/Const/api.mjs.map +1 -1
- package/_mjs/data/Const/instances.mjs +4 -4
- package/_mjs/data/Const/instances.mjs.map +1 -1
- package/_mjs/data/Datum/api.mjs +220 -179
- package/_mjs/data/Datum/api.mjs.map +1 -1
- package/_mjs/data/Datum/definition.mjs.map +1 -1
- package/_mjs/data/DatumEither/api.mjs +163 -132
- package/_mjs/data/DatumEither/api.mjs.map +1 -1
- package/_mjs/data/DecodeError/definition.mjs +14 -14
- package/_mjs/data/DecodeError/definition.mjs.map +1 -1
- package/_mjs/data/Decoder/api.mjs +9 -7
- package/_mjs/data/Decoder/api.mjs.map +1 -1
- package/_mjs/data/Duration/api.mjs +16 -10
- package/_mjs/data/Duration/api.mjs.map +1 -1
- package/_mjs/data/Either/api/align.mjs +8 -2
- package/_mjs/data/Either/api/align.mjs.map +1 -1
- package/_mjs/data/Either/api/alignWith.mjs +13 -11
- package/_mjs/data/Either/api/alignWith.mjs.map +1 -1
- package/_mjs/data/Either/api.mjs +175 -136
- package/_mjs/data/Either/api.mjs.map +1 -1
- package/_mjs/data/Either/constructors.mjs +7 -5
- package/_mjs/data/Either/constructors.mjs.map +1 -1
- package/_mjs/data/Either/destructors.mjs +15 -13
- package/_mjs/data/Either/destructors.mjs.map +1 -1
- package/_mjs/data/Either/instances.mjs +9 -9
- package/_mjs/data/Either/instances.mjs.map +1 -1
- package/_mjs/data/EitherT/api.mjs +8 -8
- package/_mjs/data/EitherT/api.mjs.map +1 -1
- package/_mjs/data/Encoder/api.mjs +102 -0
- package/_mjs/data/Encoder/api.mjs.map +1 -0
- package/_mjs/data/Encoder/definition.mjs +15 -0
- package/_mjs/data/Encoder/definition.mjs.map +1 -0
- package/_mjs/data/Encoder.mjs +4 -0
- package/_mjs/data/Encoder.mjs.map +1 -0
- package/_mjs/data/Environment/api.mjs +45 -33
- package/_mjs/data/Environment/api.mjs.map +1 -1
- package/_mjs/data/EnvironmentPatch.mjs +17 -13
- package/_mjs/data/EnvironmentPatch.mjs.map +1 -1
- package/_mjs/data/ExecutionStrategy.mjs +19 -27
- package/_mjs/data/ExecutionStrategy.mjs.map +1 -1
- package/_mjs/data/Exit/api.mjs +140 -108
- package/_mjs/data/Exit/api.mjs.map +1 -1
- package/_mjs/data/Exit/constructors.mjs +3 -3
- package/_mjs/data/Exit/constructors.mjs.map +1 -1
- package/_mjs/data/FiberId/api.mjs +22 -20
- package/_mjs/data/FiberId/api.mjs.map +1 -1
- package/_mjs/data/FiberId/constructors.mjs.map +1 -1
- package/_mjs/data/Identity/api.mjs +21 -13
- package/_mjs/data/Identity/api.mjs.map +1 -1
- package/_mjs/data/Identity/instances.mjs +4 -4
- package/_mjs/data/Identity/instances.mjs.map +1 -1
- package/_mjs/data/Interval.mjs +38 -28
- package/_mjs/data/Interval.mjs.map +1 -1
- package/_mjs/data/Intervals.mjs +35 -27
- package/_mjs/data/Intervals.mjs.map +1 -1
- package/_mjs/data/Maybe/api.mjs +141 -106
- package/_mjs/data/Maybe/api.mjs.map +1 -1
- package/_mjs/data/Maybe/constructors.mjs +1 -1
- package/_mjs/data/Maybe/constructors.mjs.map +1 -1
- package/_mjs/data/Maybe/definition.mjs.map +1 -1
- package/_mjs/data/Maybe/destructors.mjs +8 -6
- package/_mjs/data/Maybe/destructors.mjs.map +1 -1
- package/_mjs/data/Maybe/instances.mjs +12 -12
- package/_mjs/data/Maybe/instances.mjs.map +1 -1
- package/_mjs/data/Predicate/api.mjs +10 -8
- package/_mjs/data/Predicate/api.mjs.map +1 -1
- package/_mjs/data/Refinement/api.mjs +15 -9
- package/_mjs/data/Refinement/api.mjs.map +1 -1
- package/_mjs/data/Struct/api.mjs +56 -44
- package/_mjs/data/Struct/api.mjs.map +1 -1
- package/_mjs/data/Tag/constructors.mjs +3 -2
- package/_mjs/data/Tag/constructors.mjs.map +1 -1
- package/_mjs/data/Tag/definition.mjs +0 -2
- package/_mjs/data/Tag/definition.mjs.map +1 -1
- package/_mjs/data/These/api.mjs +187 -169
- package/_mjs/data/These/api.mjs.map +1 -1
- package/_mjs/data/These/constructors.mjs +1 -1
- package/_mjs/data/These/constructors.mjs.map +1 -1
- package/_mjs/data/These/destructors.mjs +35 -31
- package/_mjs/data/These/destructors.mjs.map +1 -1
- package/_mjs/data/These/instances.mjs +1 -1
- package/_mjs/data/These/instances.mjs.map +1 -1
- package/_mjs/data/Trace/api.mjs +6 -4
- package/_mjs/data/Trace/api.mjs.map +1 -1
- package/_mjs/data/Zipped.mjs.map +1 -1
- package/_mjs/data/function/api.mjs +5 -3
- package/_mjs/data/function/api.mjs.map +1 -1
- package/_mjs/data/function/pipe.mjs +7 -0
- package/_mjs/data/function/pipe.mjs.map +1 -1
- package/_mjs/data/string/api.mjs +46 -66
- package/_mjs/data/string/api.mjs.map +1 -1
- package/_mjs/global/api.mjs +4 -2
- package/_mjs/global/api.mjs.map +1 -1
- package/_mjs/internal/AtomicBoolean.mjs.map +1 -1
- package/_mjs/internal/AtomicNumber.mjs.map +1 -1
- package/_mjs/internal/AtomicReference.mjs.map +1 -1
- package/_mjs/internal/Stack.mjs +1 -1
- package/_mjs/internal/Stack.mjs.map +1 -1
- package/_mjs/optics/At/api.mjs +1 -1
- package/_mjs/optics/At/api.mjs.map +1 -1
- package/_mjs/optics/At/definition.mjs +2 -2
- package/_mjs/optics/At/definition.mjs.map +1 -1
- package/_mjs/optics/Fold/definition.mjs +2 -3
- package/_mjs/optics/Fold/definition.mjs.map +1 -1
- package/_mjs/optics/Getter/definition.mjs +1 -2
- package/_mjs/optics/Getter/definition.mjs.map +1 -1
- package/_mjs/optics/Index/api.mjs +4 -4
- package/_mjs/optics/Index/api.mjs.map +1 -1
- package/_mjs/optics/Index/definition.mjs +1 -1
- package/_mjs/optics/Index/definition.mjs.map +1 -1
- package/_mjs/optics/Iso/api.mjs +8 -6
- package/_mjs/optics/Iso/api.mjs.map +1 -1
- package/_mjs/optics/Iso/definition.mjs +9 -9
- package/_mjs/optics/Iso/definition.mjs.map +1 -1
- package/_mjs/optics/Lens/api.mjs +49 -39
- package/_mjs/optics/Lens/api.mjs.map +1 -1
- package/_mjs/optics/Lens/definition.mjs +7 -7
- package/_mjs/optics/Lens/definition.mjs.map +1 -1
- package/_mjs/optics/Optional/api/compose.mjs +8 -6
- package/_mjs/optics/Optional/api/compose.mjs.map +1 -1
- package/_mjs/optics/Optional/definition.mjs +8 -10
- package/_mjs/optics/Optional/definition.mjs.map +1 -1
- package/_mjs/optics/Optional.mjs.map +1 -1
- package/_mjs/optics/Prism/api/compose.mjs +8 -6
- package/_mjs/optics/Prism/api/compose.mjs.map +1 -1
- package/_mjs/optics/Prism/api/fromNullable.mjs +2 -2
- package/_mjs/optics/Prism/api/fromNullable.mjs.map +1 -1
- package/_mjs/optics/Prism/api/just.mjs +2 -2
- package/_mjs/optics/Prism/api/just.mjs.map +1 -1
- package/_mjs/optics/Prism/definition.mjs +6 -6
- package/_mjs/optics/Prism/definition.mjs.map +1 -1
- package/_mjs/optics/Prism.mjs.map +1 -1
- package/_mjs/optics/Setter/definition.mjs +5 -10
- package/_mjs/optics/Setter/definition.mjs.map +1 -1
- package/_mjs/optics/Traversal/api/compose.mjs +7 -5
- package/_mjs/optics/Traversal/api/compose.mjs.map +1 -1
- package/_mjs/optics/Traversal/api/fromTraversable.mjs +2 -2
- package/_mjs/optics/Traversal/api/fromTraversable.mjs.map +1 -1
- package/_mjs/optics/Traversal/definition.mjs +9 -9
- package/_mjs/optics/Traversal/definition.mjs.map +1 -1
- package/_mjs/optics/Traversal.mjs.map +1 -1
- package/_mjs/typeclass/Align.mjs.map +1 -1
- package/_mjs/typeclass/Alt.mjs.map +1 -1
- package/_mjs/typeclass/Applicative.mjs.map +1 -1
- package/_mjs/typeclass/ApplicativeExcept.mjs +6 -10
- package/_mjs/typeclass/ApplicativeExcept.mjs.map +1 -1
- package/_mjs/typeclass/Apply.mjs +9 -9
- package/_mjs/typeclass/Apply.mjs.map +1 -1
- package/_mjs/typeclass/Chain.mjs +5 -5
- package/_mjs/typeclass/Chain.mjs.map +1 -1
- package/_mjs/typeclass/Eq/definition.mjs.map +1 -1
- package/_mjs/typeclass/Eq/derivations.mjs.map +1 -1
- package/_mjs/typeclass/Equatable/api.mjs.map +1 -1
- package/_mjs/typeclass/Equatable/definition.mjs.map +1 -1
- package/_mjs/typeclass/Equatable/fast-equals.mjs.map +1 -1
- package/_mjs/typeclass/Filterable.mjs.map +1 -1
- package/_mjs/typeclass/FilterableWithIndex.mjs.map +1 -1
- package/_mjs/typeclass/Foldable.mjs +1 -1
- package/_mjs/typeclass/Foldable.mjs.map +1 -1
- package/_mjs/typeclass/FoldableWithIndex.mjs +1 -1
- package/_mjs/typeclass/FoldableWithIndex.mjs.map +1 -1
- package/_mjs/typeclass/Functor.mjs.map +1 -1
- package/_mjs/typeclass/FunctorWithIndex.mjs.map +1 -1
- package/_mjs/typeclass/Guard/api.mjs +18 -10
- package/_mjs/typeclass/Guard/api.mjs.map +1 -1
- package/_mjs/typeclass/Guard/definition.mjs.map +1 -1
- package/_mjs/typeclass/Guard/derivations.mjs.map +1 -1
- package/_mjs/typeclass/Has.mjs +7 -5
- package/_mjs/typeclass/Has.mjs.map +1 -1
- package/_mjs/typeclass/HashEq.mjs.map +1 -1
- package/_mjs/typeclass/Hashable/definition.mjs.map +1 -1
- package/_mjs/typeclass/Hashable/hash.mjs.map +1 -1
- package/_mjs/typeclass/MonadExcept.mjs +1 -1
- package/_mjs/typeclass/MonadExcept.mjs.map +1 -1
- package/_mjs/typeclass/Ord/api/contramap.mjs +7 -5
- package/_mjs/typeclass/Ord/api/contramap.mjs.map +1 -1
- package/_mjs/typeclass/Ord/api/max.mjs.map +1 -1
- package/_mjs/typeclass/Ord/api/min.mjs.map +1 -1
- package/_mjs/typeclass/Ord/definition.mjs.map +1 -1
- package/_mjs/typeclass/Ord/instances.mjs.map +1 -1
- package/_mjs/typeclass/Ordering.mjs.map +1 -1
- package/_mjs/typeclass/Semialign.mjs +7 -7
- package/_mjs/typeclass/Semialign.mjs.map +1 -1
- package/_mjs/typeclass/Semigroup/api.mjs.map +1 -1
- package/_mjs/typeclass/Semigroup/definition.mjs.map +1 -1
- package/_mjs/typeclass/Semigroup/derivations.mjs.map +1 -1
- package/_mjs/typeclass/Semimonoidal.mjs.map +1 -1
- package/_mjs/typeclass/Showable/definition.mjs.map +1 -1
- package/_mjs/typeclass/Showable/show.mjs +107 -107
- package/_mjs/typeclass/Showable/show.mjs.map +1 -1
- package/_mjs/typeclass/Showable/styles.mjs.map +1 -1
- package/_mjs/typeclass/Showable/util.mjs +1 -1
- package/_mjs/typeclass/Showable/util.mjs.map +1 -1
- package/_mjs/typeclass/Traversable.mjs +1 -2
- package/_mjs/typeclass/Traversable.mjs.map +1 -1
- package/_mjs/typeclass/TraversableWithIndex.mjs.map +1 -1
- package/_mjs/typeclass/Witherable.mjs +2 -1
- package/_mjs/typeclass/Witherable.mjs.map +1 -1
- package/_mjs/typeclass/WitherableWithIndex.mjs +2 -1
- package/_mjs/typeclass/WitherableWithIndex.mjs.map +1 -1
- package/_mjs/util/AnsiFormat.mjs +11 -11
- package/_mjs/util/AnsiFormat.mjs.map +1 -1
- package/_mjs/util/PCGRandom.mjs.map +1 -1
- package/_mjs/util/assert.mjs.map +1 -1
- package/_mjs/util/pattern.mjs.map +1 -1
- package/_mjs/util/predicates.mjs.map +1 -1
- package/_mjs/util/rand/Random.mjs.map +1 -1
- package/_mjs/util/rand/distribution/UniformArrayIntDistribution.mjs.map +1 -1
- package/_mjs/util/rand/distribution/UniformBigIntDistribution.mjs.map +1 -1
- package/_mjs/util/rand/distribution/UniformIntDistribution.mjs.map +1 -1
- package/_mjs/util/rand/distribution/internals/ArrayInt.mjs.map +1 -1
- package/_mjs/util/rand/distribution/internals/UniformArrayIntDistributionInternal.mjs.map +1 -1
- package/_mjs/util/rand/distribution/internals/UniformIntDistributionInternal.mjs.map +1 -1
- package/_mjs/util/rand/generator/MersenneTwister.mjs.map +1 -1
- package/_mjs/util/rand/generator/RandomGenerator.mjs.map +1 -1
- package/_mjs/util/rand.mjs.map +1 -1
- package/_src/collection/Iterable/api/traverseConc.ts +3 -3
- package/_src/collection/Iterable/api.ts +445 -408
- package/_src/collection/Iterable/constructors.ts +1 -1
- package/_src/collection/compat/Array/api.ts +16 -13
- package/_src/collection/compat/Array/derivations.ts +27 -1
- package/_src/collection/compat/Record/instances.ts +51 -2
- package/_src/collection/immutable/Conc/api.ts +716 -607
- package/_src/collection/immutable/Conc/definition.ts +60 -68
- package/_src/collection/immutable/Conc/derivations.ts +13 -0
- package/_src/collection/immutable/Conc.ts +0 -1
- package/_src/collection/immutable/Dictionary/api.ts +44 -32
- package/_src/collection/immutable/HashMap/api.ts +338 -224
- package/_src/collection/immutable/HashMap/internal.ts +3 -7
- package/_src/collection/immutable/HashSet/api.ts +193 -158
- package/_src/collection/immutable/ImmutableArray/api/chunksOf.ts +5 -3
- package/_src/collection/immutable/ImmutableArray/api/slice.ts +5 -3
- package/_src/collection/immutable/ImmutableArray/api/splitAt.ts +5 -3
- package/_src/collection/immutable/ImmutableArray/api/splitWhere.ts +13 -14
- package/_src/collection/immutable/ImmutableArray/api.ts +870 -722
- package/_src/collection/immutable/ImmutableArray/derivations.ts +13 -0
- package/_src/collection/immutable/ImmutableArray/instances.ts +54 -73
- package/_src/collection/immutable/ImmutableArray.ts +0 -1
- package/_src/collection/immutable/ImmutableNonEmptyArray/api.ts +311 -273
- package/_src/collection/immutable/ImmutableNonEmptyArray/constructors.ts +19 -4
- package/_src/collection/immutable/ImmutableNonEmptyArray/definition.ts +0 -1
- package/_src/collection/immutable/ImmutableNonEmptyArray/derivations.ts +13 -0
- package/_src/collection/immutable/ImmutableNonEmptyArray/instances.ts +22 -23
- package/_src/collection/immutable/List/api/foldLeft.ts +11 -9
- package/_src/collection/immutable/List/api.ts +147 -133
- package/_src/collection/immutable/List.ts +0 -1
- package/_src/collection/immutable/Queue/api.ts +53 -37
- package/_src/collection/immutable/Queue/definition.ts +0 -1
- package/_src/collection/immutable/RoseTree/api.ts +38 -32
- package/_src/collection/immutable/RoseTree/definition.ts +2 -0
- package/_src/collection/immutable/SortedMap/api.ts +364 -332
- package/_src/collection/immutable/Vector/api.ts +608 -482
- package/_src/collection/immutable/Vector/definition.ts +11 -12
- package/_src/collection/immutable/Vector/internal.ts +37 -38
- package/_src/collection/mutable/HashMap.ts +1 -4
- package/_src/collection/mutable/HashSet.ts +1 -2
- package/_src/collection/mutable/ListBuffer.ts +1 -1
- package/_src/collection/mutable/internal.ts +0 -2
- package/_src/collection/weak/IterableWeakMap.ts +11 -7
- package/_src/collection/weak/IterableWeakSet.ts +10 -5
- package/_src/control/Eval/api.ts +35 -19
- package/_src/control/Eval/instance.ts +5 -5
- package/_src/control/Z/api.ts +191 -208
- package/_src/control/Z/instances.ts +4 -5
- package/_src/control/Z/runtime.ts +190 -189
- package/_src/data/Branded/definition.ts +11 -12
- package/_src/data/Branded/derivations.ts +2 -2
- package/_src/data/CaseClass.ts +4 -1
- package/_src/data/Cause/api/fold.ts +13 -14
- package/_src/data/Cause/api.ts +125 -105
- package/_src/data/Cause.ts +0 -1
- package/_src/data/Const/api.ts +6 -4
- package/_src/data/Const/instances.ts +3 -3
- package/_src/data/Datum/api.ts +229 -197
- package/_src/data/Datum/definition.ts +2 -5
- package/_src/data/DatumEither/api.ts +208 -193
- package/_src/data/Decoder/api.ts +5 -3
- package/_src/data/Duration/api.ts +19 -15
- package/_src/data/Either/api/align.ts +7 -2
- package/_src/data/Either/api/alignWith.ts +13 -15
- package/_src/data/Either/api.ts +141 -119
- package/_src/data/Either/constructors.ts +12 -10
- package/_src/data/Either/destructors.ts +11 -9
- package/_src/data/Either/instances.ts +24 -20
- package/_src/data/EitherT/api.ts +43 -49
- package/_src/data/Encoder/api.ts +123 -0
- package/_src/data/Encoder/definition.ts +12 -0
- package/_src/data/Encoder.ts +4 -0
- package/_src/data/Environment/api.ts +52 -44
- package/_src/data/EnvironmentPatch.ts +10 -9
- package/_src/data/ExecutionStrategy.ts +14 -24
- package/_src/data/Exit/api.ts +104 -73
- package/_src/data/Exit/constructors.ts +2 -2
- package/_src/data/FiberId/api.ts +19 -17
- package/_src/data/FiberId/constructors.ts +1 -2
- package/_src/data/Identity/api.ts +20 -12
- package/_src/data/Identity/instances.ts +4 -7
- package/_src/data/Interval.ts +39 -29
- package/_src/data/Intervals.ts +31 -23
- package/_src/data/Maybe/api.ts +112 -79
- package/_src/data/Maybe/constructors.ts +3 -3
- package/_src/data/Maybe/definition.ts +11 -1
- package/_src/data/Maybe/destructors.ts +6 -4
- package/_src/data/Maybe/instances.ts +10 -21
- package/_src/data/Predicate/api.ts +14 -8
- package/_src/data/Refinement/api.ts +19 -13
- package/_src/data/Struct/api.ts +75 -55
- package/_src/data/Tag/constructors.ts +1 -2
- package/_src/data/Tag/definition.ts +0 -1
- package/_src/data/These/api.ts +114 -114
- package/_src/data/These/destructors.ts +23 -24
- package/_src/data/Trace/api.ts +5 -3
- package/_src/data/Zipped.ts +3 -4
- package/_src/data/function/api.ts +6 -7
- package/_src/data/function/pipe.ts +9 -1
- package/_src/data/string/api.ts +40 -60
- package/_src/data.ts +1 -0
- package/_src/global/api.ts +7 -12
- package/_src/global.ts +4 -0
- package/_src/internal/AtomicBoolean.ts +0 -1
- package/_src/internal/AtomicNumber.ts +0 -7
- package/_src/internal/AtomicReference.ts +0 -4
- package/_src/internal/Stack.ts +1 -7
- package/_src/optics/At/definition.ts +5 -3
- package/_src/optics/Fold/definition.ts +3 -10
- package/_src/optics/Getter/definition.ts +1 -2
- package/_src/optics/Index/definition.ts +1 -1
- package/_src/optics/Iso/api.ts +8 -6
- package/_src/optics/Iso/definition.ts +3 -3
- package/_src/optics/Lens/api.ts +44 -42
- package/_src/optics/Lens/definition.ts +5 -5
- package/_src/optics/Optional/api/compose.ts +9 -9
- package/_src/optics/Optional/definition.ts +9 -16
- package/_src/optics/Optional.ts +0 -1
- package/_src/optics/Prism/api/compose.ts +9 -6
- package/_src/optics/Prism/definition.ts +3 -3
- package/_src/optics/Prism.ts +0 -1
- package/_src/optics/Setter/definition.ts +3 -23
- package/_src/optics/Traversal/api/compose.ts +7 -8
- package/_src/optics/Traversal/api/fromTraversable.ts +1 -1
- package/_src/optics/Traversal/definition.ts +10 -15
- package/_src/optics/Traversal.ts +0 -1
- package/_src/typeclass/Align.ts +0 -3
- package/_src/typeclass/Alt.ts +2 -1
- package/_src/typeclass/Applicative.ts +0 -1
- package/_src/typeclass/ApplicativeExcept.ts +15 -10
- package/_src/typeclass/Apply.ts +30 -33
- package/_src/typeclass/Chain.ts +9 -12
- package/_src/typeclass/Eq/definition.ts +0 -3
- package/_src/typeclass/Eq/derivations.ts +0 -2
- package/_src/typeclass/Equatable/api.ts +0 -2
- package/_src/typeclass/Equatable/definition.ts +0 -4
- package/_src/typeclass/Equatable/fast-equals.ts +11 -93
- package/_src/typeclass/Filterable.ts +19 -13
- package/_src/typeclass/FilterableWithIndex.ts +19 -13
- package/_src/typeclass/Foldable.ts +7 -10
- package/_src/typeclass/FoldableWithIndex.ts +7 -10
- package/_src/typeclass/Functor.ts +6 -4
- package/_src/typeclass/FunctorWithIndex.ts +3 -2
- package/_src/typeclass/Guard/api.ts +21 -16
- package/_src/typeclass/Guard/definition.ts +0 -3
- package/_src/typeclass/Guard/derivations.ts +5 -6
- package/_src/typeclass/Has.ts +6 -4
- package/_src/typeclass/HashEq.ts +0 -7
- package/_src/typeclass/Hashable/definition.ts +0 -4
- package/_src/typeclass/Hashable/hash.ts +0 -26
- package/_src/typeclass/MonadExcept.ts +1 -1
- package/_src/typeclass/Ord/api/contramap.ts +7 -6
- package/_src/typeclass/Ord/api/max.ts +0 -1
- package/_src/typeclass/Ord/api/min.ts +0 -1
- package/_src/typeclass/Ord/definition.ts +0 -4
- package/_src/typeclass/Ord/instances.ts +0 -2
- package/_src/typeclass/Ordering.ts +2 -0
- package/_src/typeclass/Semialign.ts +43 -32
- package/_src/typeclass/Semigroup/api.ts +0 -2
- package/_src/typeclass/Semigroup/definition.ts +0 -4
- package/_src/typeclass/Semigroup/derivations.ts +0 -2
- package/_src/typeclass/Semimonoidal.ts +3 -2
- package/_src/typeclass/Showable/definition.ts +0 -6
- package/_src/typeclass/Showable/show.ts +1 -57
- package/_src/typeclass/Showable/styles.ts +0 -8
- package/_src/typeclass/Showable/util.ts +22 -57
- package/_src/typeclass/Traversable.ts +13 -18
- package/_src/typeclass/TraversableWithIndex.ts +5 -7
- package/_src/typeclass/Witherable.ts +21 -13
- package/_src/typeclass/WitherableWithIndex.ts +26 -17
- package/_src/typeclass/builtin/Symbol.ts +0 -1
- package/_src/types/extractions.ts +12 -3
- package/_src/types/utility.ts +3 -5
- package/_src/util/AnsiFormat.ts +0 -25
- package/_src/util/PCGRandom.ts +4 -9
- package/_src/util/assert.ts +1 -2
- package/_src/util/pattern.ts +91 -12
- package/_src/util/predicates.ts +3 -1
- package/_src/util/rand/Random.ts +12 -16
- package/_src/util/rand/distribution/Distribution.ts +0 -1
- package/_src/util/rand/distribution/UniformArrayIntDistribution.ts +0 -3
- package/_src/util/rand/distribution/UniformBigIntDistribution.ts +0 -5
- package/_src/util/rand/distribution/UniformIntDistribution.ts +0 -7
- package/_src/util/rand/distribution/internals/ArrayInt.ts +3 -13
- package/_src/util/rand/distribution/internals/UniformArrayIntDistributionInternal.ts +0 -3
- package/_src/util/rand/distribution/internals/UniformIntDistributionInternal.ts +0 -4
- package/_src/util/rand/generator/MersenneTwister.ts +6 -29
- package/_src/util/rand/generator/RandomGenerator.ts +0 -3
- package/_src/util/rand.ts +0 -2
- package/collection/Iterable/api/traverseConc.d.ts +2 -2
- package/collection/Iterable/api.d.ts +64 -64
- package/collection/Iterable/constructors.d.ts +1 -1
- package/collection/compat/Array/api.d.ts +6 -6
- package/collection/compat/Array/derivations.d.ts +11 -0
- package/collection/compat/Record/instances.d.ts +30 -6
- package/collection/immutable/Conc/api.d.ts +108 -105
- package/collection/immutable/Conc/definition.d.ts +2 -2
- package/collection/immutable/Conc/derivations.d.ts +6 -0
- package/collection/immutable/Dictionary/api.d.ts +12 -12
- package/collection/immutable/HashMap/api.d.ts +76 -70
- package/collection/immutable/HashSet/api.d.ts +45 -41
- package/collection/immutable/ImmutableArray/api/chunksOf.d.ts +2 -2
- package/collection/immutable/ImmutableArray/api/slice.d.ts +2 -2
- package/collection/immutable/ImmutableArray/api/splitAt.d.ts +2 -2
- package/collection/immutable/ImmutableArray/api/splitWhere.d.ts +3 -3
- package/collection/immutable/ImmutableArray/api.d.ts +206 -206
- package/collection/immutable/ImmutableArray/derivations.d.ts +6 -0
- package/collection/immutable/ImmutableNonEmptyArray/api.d.ts +64 -63
- package/collection/immutable/ImmutableNonEmptyArray/derivations.d.ts +6 -0
- package/collection/immutable/List/api/foldLeft.d.ts +2 -2
- package/collection/immutable/List/api.d.ts +24 -24
- package/collection/immutable/Queue/api.d.ts +16 -16
- package/collection/immutable/RoseTree/api.d.ts +14 -14
- package/collection/immutable/SortedMap/api.d.ts +41 -41
- package/collection/immutable/Vector/api.d.ts +121 -117
- package/collection/immutable/Vector/definition.d.ts +2 -2
- package/collection/immutable/Vector/internal.d.ts +2 -2
- package/collection/mutable/ListBuffer.d.ts +1 -1
- package/control/Eval/api.d.ts +12 -12
- package/control/Z/api.d.ts +68 -68
- package/control/Z/runtime.d.ts +10 -10
- package/data/Branded/derivations.d.ts +2 -2
- package/data/Cause/api/fold.d.ts +3 -3
- package/data/Cause/api.d.ts +20 -20
- package/data/Const/api.d.ts +3 -3
- package/data/Datum/api.d.ts +43 -41
- package/data/DatumEither/api.d.ts +48 -46
- package/data/Decoder/api.d.ts +2 -2
- package/data/Duration/api.d.ts +7 -7
- package/data/Either/api/align.d.ts +5 -1
- package/data/Either/api/alignWith.d.ts +2 -2
- package/data/Either/api.d.ts +40 -46
- package/data/Either/constructors.d.ts +6 -6
- package/data/Either/destructors.d.ts +2 -2
- package/data/EitherT/api.d.ts +6 -6
- package/data/Encoder/api.d.ts +73 -0
- package/data/Encoder/definition.d.ts +12 -0
- package/data/Encoder.d.ts +2 -0
- package/data/Environment/api.d.ts +14 -14
- package/data/EnvironmentPatch.d.ts +4 -4
- package/data/ExecutionStrategy.d.ts +1 -6
- package/data/Exit/api.d.ts +32 -32
- package/data/Exit/constructors.d.ts +2 -2
- package/data/FiberId/api.d.ts +2 -2
- package/data/Identity/api.d.ts +8 -8
- package/data/Interval.d.ts +11 -11
- package/data/Intervals.d.ts +11 -11
- package/data/Maybe/api.d.ts +36 -37
- package/data/Maybe/constructors.d.ts +2 -2
- package/data/Maybe/definition.d.ts +7 -3
- package/data/Maybe/destructors.d.ts +2 -2
- package/data/Predicate/api.d.ts +5 -5
- package/data/Refinement/api.d.ts +9 -9
- package/data/Struct/api.d.ts +13 -23
- package/data/Tag/constructors.d.ts +1 -2
- package/data/Tag/definition.d.ts +0 -1
- package/data/These/api.d.ts +18 -22
- package/data/These/destructors.d.ts +4 -4
- package/data/Trace/api.d.ts +2 -2
- package/data/function/api.d.ts +3 -3
- package/data/function/pipe.d.ts +7 -1
- package/data/string/api.d.ts +9 -49
- package/data.d.ts +1 -0
- package/global/api.d.ts +3 -3
- package/global.d.ts +4 -0
- package/internal/Stack.d.ts +1 -1
- package/optics/At/definition.d.ts +1 -1
- package/optics/Fold/definition.d.ts +2 -6
- package/optics/Getter/definition.d.ts +1 -1
- package/optics/Index/definition.d.ts +1 -1
- package/optics/Iso/api.d.ts +2 -2
- package/optics/Iso/definition.d.ts +2 -2
- package/optics/Lens/api.d.ts +10 -10
- package/optics/Lens/definition.d.ts +4 -4
- package/optics/Optional/api/compose.d.ts +2 -2
- package/optics/Optional/definition.d.ts +4 -8
- package/optics/Prism/api/compose.d.ts +2 -2
- package/optics/Prism/definition.d.ts +2 -2
- package/optics/Setter/definition.d.ts +2 -14
- package/optics/Traversal/api/compose.d.ts +2 -2
- package/optics/Traversal/definition.d.ts +4 -4
- package/package.json +1 -1
- package/typeclass/Alt.d.ts +1 -1
- package/typeclass/ApplicativeExcept.d.ts +2 -6
- package/typeclass/Apply.d.ts +5 -5
- package/typeclass/Chain.d.ts +4 -4
- package/typeclass/Filterable.d.ts +6 -6
- package/typeclass/FilterableWithIndex.d.ts +6 -6
- package/typeclass/Foldable.d.ts +4 -4
- package/typeclass/FoldableWithIndex.d.ts +4 -4
- package/typeclass/Functor.d.ts +2 -2
- package/typeclass/FunctorWithIndex.d.ts +1 -1
- package/typeclass/Guard/api.d.ts +7 -7
- package/typeclass/Has.d.ts +3 -3
- package/typeclass/Ord/api/contramap.d.ts +2 -2
- package/typeclass/Semialign.d.ts +14 -14
- package/typeclass/Semimonoidal.d.ts +1 -1
- package/typeclass/Traversable.d.ts +4 -6
- package/typeclass/TraversableWithIndex.d.ts +2 -2
- package/typeclass/Witherable.d.ts +3 -3
- package/typeclass/WitherableWithIndex.d.ts +5 -5
- package/types/extractions.d.ts +10 -6
- package/util/assert.d.ts +1 -1
package/_src/util/PCGRandom.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/* eslint-disable no-param-reassign */
|
|
2
|
-
|
|
3
2
|
/*
|
|
4
3
|
* Copyright 2014 Thom Chiovoloni, released under the MIT license.
|
|
5
4
|
*
|
|
@@ -14,7 +13,6 @@
|
|
|
14
13
|
export function isNothing<T>(value: T | null | undefined) {
|
|
15
14
|
return value === void 0 || value === null;
|
|
16
15
|
}
|
|
17
|
-
|
|
18
16
|
const defaultIncHi = 0x14057b7e;
|
|
19
17
|
const defaultIncLo = 0xf767814f;
|
|
20
18
|
const MUL_HI = 0x5851f42d >>> 0;
|
|
@@ -159,9 +157,8 @@ function mul64(out: Int32Array, aHi: number, aLo: number, bHi: number, bLo: numb
|
|
|
159
157
|
|
|
160
158
|
let lo = ((aLo & 0xffff) * (bLo & 0xffff)) >>> 0;
|
|
161
159
|
let hi = ((aLo >>> 16) * (bLo >>> 16) + ((c0 >>> 16) + (c1 >>> 16))) >>> 0;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
lo = (lo + c0) >>> 0;
|
|
160
|
+
c0 = (c0 << 16) >>> 0;
|
|
161
|
+
lo = (lo + c0) >>> 0;
|
|
165
162
|
if (lo >>> 0 < c0 >>> 0) {
|
|
166
163
|
hi = (hi + 1) >>> 0;
|
|
167
164
|
}
|
|
@@ -171,10 +168,8 @@ function mul64(out: Int32Array, aHi: number, aLo: number, bHi: number, bLo: numb
|
|
|
171
168
|
if (lo >>> 0 < c1 >>> 0) {
|
|
172
169
|
hi = (hi + 1) >>> 0;
|
|
173
170
|
}
|
|
174
|
-
|
|
175
|
-
hi
|
|
176
|
-
hi = (hi + Math.imul(aHi, bLo)) >>> 0;
|
|
177
|
-
|
|
171
|
+
hi = (hi + Math.imul(aLo, bHi)) >>> 0;
|
|
172
|
+
hi = (hi + Math.imul(aHi, bLo)) >>> 0;
|
|
178
173
|
out[0] = hi;
|
|
179
174
|
out[1] = lo;
|
|
180
175
|
}
|
package/_src/util/assert.ts
CHANGED
|
@@ -3,8 +3,7 @@ export class AssertionError extends Error {
|
|
|
3
3
|
super(`Assertion Failed: ${message}`);
|
|
4
4
|
}
|
|
5
5
|
}
|
|
6
|
-
|
|
7
|
-
export function assert(assertion: boolean, message: string) {
|
|
6
|
+
export function assert(assertion: boolean, message: string): asserts assertion {
|
|
8
7
|
if (!assertion) {
|
|
9
8
|
throw new AssertionError(message);
|
|
10
9
|
}
|
package/_src/util/pattern.ts
CHANGED
|
@@ -1,15 +1,55 @@
|
|
|
1
1
|
export const pattern_: <N extends string>(
|
|
2
2
|
n: N,
|
|
3
3
|
) => {
|
|
4
|
-
<
|
|
4
|
+
<
|
|
5
|
+
X extends {
|
|
6
|
+
[k in N]: string;
|
|
7
|
+
},
|
|
8
|
+
K extends {
|
|
9
|
+
[k in X[N]]: (
|
|
10
|
+
_: Extract<
|
|
11
|
+
X,
|
|
12
|
+
{
|
|
13
|
+
[_tag in N]: k;
|
|
14
|
+
}
|
|
15
|
+
>,
|
|
16
|
+
) => any;
|
|
17
|
+
},
|
|
18
|
+
>(
|
|
5
19
|
m: X,
|
|
6
20
|
_: K,
|
|
7
21
|
): ReturnType<K[keyof K]>;
|
|
8
|
-
<
|
|
22
|
+
<
|
|
23
|
+
X extends {
|
|
24
|
+
[k in N]: string;
|
|
25
|
+
},
|
|
26
|
+
K extends {
|
|
27
|
+
[k in X[N]]?: (
|
|
28
|
+
_: Extract<
|
|
29
|
+
X,
|
|
30
|
+
{
|
|
31
|
+
[_tag in N]: k;
|
|
32
|
+
}
|
|
33
|
+
>,
|
|
34
|
+
) => any;
|
|
35
|
+
},
|
|
36
|
+
H,
|
|
37
|
+
>(
|
|
9
38
|
m: X,
|
|
10
39
|
_: K,
|
|
11
|
-
__: (
|
|
12
|
-
|
|
40
|
+
__: (
|
|
41
|
+
_: Exclude<
|
|
42
|
+
X,
|
|
43
|
+
{
|
|
44
|
+
_tag: keyof K;
|
|
45
|
+
}
|
|
46
|
+
>,
|
|
47
|
+
) => H,
|
|
48
|
+
):
|
|
49
|
+
| {
|
|
50
|
+
[k in keyof K]: ReturnType<NonNullable<K[k]>>;
|
|
51
|
+
}[keyof K]
|
|
52
|
+
| H;
|
|
13
53
|
} = (n) =>
|
|
14
54
|
((m: any, _: any, d: any) => {
|
|
15
55
|
return (_[m[n]] ? _[m[n]](m) : d(m)) as any;
|
|
@@ -18,18 +58,57 @@ export const pattern_: <N extends string>(
|
|
|
18
58
|
export const pattern: <N extends string>(
|
|
19
59
|
n: N,
|
|
20
60
|
) => {
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
61
|
+
<
|
|
62
|
+
X extends {
|
|
63
|
+
[k in N]: string;
|
|
64
|
+
},
|
|
65
|
+
K extends {
|
|
66
|
+
[k in X[N]]: (
|
|
67
|
+
_: Extract<
|
|
68
|
+
X,
|
|
69
|
+
{
|
|
70
|
+
[_tag in N]: k;
|
|
71
|
+
}
|
|
72
|
+
>,
|
|
73
|
+
) => any;
|
|
74
|
+
},
|
|
75
|
+
>(
|
|
76
|
+
_: K,
|
|
77
|
+
): (m: X) => ReturnType<K[keyof K]>;
|
|
78
|
+
<
|
|
79
|
+
X extends {
|
|
80
|
+
[k in N]: string;
|
|
81
|
+
},
|
|
82
|
+
K extends {
|
|
83
|
+
[k in X[N]]?: (
|
|
84
|
+
_: Extract<
|
|
85
|
+
X,
|
|
86
|
+
{
|
|
87
|
+
[_tag in N]: k;
|
|
88
|
+
}
|
|
89
|
+
>,
|
|
90
|
+
) => any;
|
|
91
|
+
},
|
|
92
|
+
H,
|
|
93
|
+
>(
|
|
25
94
|
_: K,
|
|
26
|
-
__: (
|
|
27
|
-
|
|
95
|
+
__: (
|
|
96
|
+
_: Exclude<
|
|
97
|
+
X,
|
|
98
|
+
{
|
|
99
|
+
_tag: keyof K;
|
|
100
|
+
}
|
|
101
|
+
>,
|
|
102
|
+
) => H,
|
|
103
|
+
): (m: X) =>
|
|
104
|
+
| {
|
|
105
|
+
[k in keyof K]: ReturnType<NonNullable<K[k]>>;
|
|
106
|
+
}[keyof K]
|
|
107
|
+
| H;
|
|
28
108
|
} = (n) =>
|
|
29
109
|
((_: any, d: any) => (m: any) => {
|
|
30
110
|
return (_[m[n]] ? _[m[n]](m) : d(m)) as any;
|
|
31
111
|
}) as any;
|
|
32
112
|
|
|
33
113
|
export const matchTag_ = pattern_("_tag");
|
|
34
|
-
|
|
35
|
-
export const matchTag = pattern("_tag");
|
|
114
|
+
export const matchTag = pattern("_tag");
|
package/_src/util/predicates.ts
CHANGED
|
@@ -44,7 +44,9 @@ export function isObject<A>(value: A | Primitive): boolean {
|
|
|
44
44
|
export function hasTypeId<X extends symbol>(
|
|
45
45
|
value: unknown,
|
|
46
46
|
typeId: X,
|
|
47
|
-
): value is {
|
|
47
|
+
): value is {
|
|
48
|
+
readonly _typeId: X;
|
|
49
|
+
} & Record<PropertyKey, unknown> {
|
|
48
50
|
return isObject(value) && "_typeId" in value && value["_typeId"] === typeId;
|
|
49
51
|
}
|
|
50
52
|
|
package/_src/util/rand/Random.ts
CHANGED
|
@@ -3,7 +3,6 @@ import type RandomGenerator from "@fncts/base/util/rand/generator/RandomGenerato
|
|
|
3
3
|
import { uniformArrayIntDistribution } from "@fncts/base/util/rand/distribution/UniformArrayIntDistribution";
|
|
4
4
|
import { uniformBigIntDistribution } from "@fncts/base/util/rand/distribution/UniformBigIntDistribution";
|
|
5
5
|
import { uniformIntDistribution } from "@fncts/base/util/rand/distribution/UniformIntDistribution";
|
|
6
|
-
|
|
7
6
|
/**
|
|
8
7
|
* Wrapper around an instance of a `pure-rand`'s random number generator
|
|
9
8
|
* offering a simpler interface to deal with random with impure patterns
|
|
@@ -15,24 +14,20 @@ export class MutableRandom {
|
|
|
15
14
|
private static MAX_INT: number = 0x7fffffff | 0;
|
|
16
15
|
private static DBL_FACTOR: number = Math.pow(2, 27);
|
|
17
16
|
private static DBL_DIVISOR: number = Math.pow(2, -53);
|
|
18
|
-
|
|
19
17
|
/**
|
|
20
18
|
* Create a mutable random number generator
|
|
21
19
|
* @param internalRng - Immutable random generator from pure-rand library
|
|
22
20
|
*/
|
|
23
21
|
constructor(private internalRng: RandomGenerator) {}
|
|
24
|
-
|
|
25
22
|
/**
|
|
26
23
|
* Clone the random number generator
|
|
27
24
|
*/
|
|
28
25
|
clone(): MutableRandom {
|
|
29
26
|
return new MutableRandom(this.internalRng);
|
|
30
27
|
}
|
|
31
|
-
|
|
32
28
|
private uniformIn(rangeMin: number, rangeMax: number): number {
|
|
33
29
|
return uniformIntDistribution(rangeMin, rangeMax, this.internalRng);
|
|
34
30
|
}
|
|
35
|
-
|
|
36
31
|
/**
|
|
37
32
|
* Generate an integer having `bits` random bits
|
|
38
33
|
* @param bits - Number of bits to generate
|
|
@@ -40,20 +35,16 @@ export class MutableRandom {
|
|
|
40
35
|
next(bits: number): number {
|
|
41
36
|
return this.uniformIn(0, (1 << bits) - 1);
|
|
42
37
|
}
|
|
43
|
-
|
|
44
38
|
/**
|
|
45
39
|
* Generate a random boolean
|
|
46
40
|
*/
|
|
47
|
-
|
|
48
41
|
nextBoolean(): boolean {
|
|
49
42
|
return this.uniformIn(0, 1) === 1;
|
|
50
43
|
}
|
|
51
|
-
|
|
52
44
|
/**
|
|
53
45
|
* Generate a random integer (32 bits)
|
|
54
46
|
*/
|
|
55
47
|
nextInt(): number;
|
|
56
|
-
|
|
57
48
|
/**
|
|
58
49
|
* Generate a random integer between min (included) and max (included)
|
|
59
50
|
* @param min - Minimal integer value
|
|
@@ -63,7 +54,6 @@ export class MutableRandom {
|
|
|
63
54
|
nextInt(min?: number, max?: number): number {
|
|
64
55
|
return this.uniformIn(min == null ? MutableRandom.MIN_INT : min, max == null ? MutableRandom.MAX_INT : max);
|
|
65
56
|
}
|
|
66
|
-
|
|
67
57
|
/**
|
|
68
58
|
* Generate a random bigint between min (included) and max (included)
|
|
69
59
|
* @param min - Minimal bigint value
|
|
@@ -72,19 +62,26 @@ export class MutableRandom {
|
|
|
72
62
|
nextBigInt(min: bigint, max: bigint): bigint {
|
|
73
63
|
return uniformBigIntDistribution(min, max, this.internalRng);
|
|
74
64
|
}
|
|
75
|
-
|
|
76
65
|
/**
|
|
77
66
|
* Generate a random ArrayInt between min (included) and max (included)
|
|
78
67
|
* @param min - Minimal ArrayInt value
|
|
79
68
|
* @param max - Maximal ArrayInt value
|
|
80
69
|
*/
|
|
81
70
|
nextArrayInt(
|
|
82
|
-
min: {
|
|
83
|
-
|
|
84
|
-
|
|
71
|
+
min: {
|
|
72
|
+
sign: 1 | -1;
|
|
73
|
+
data: number[];
|
|
74
|
+
},
|
|
75
|
+
max: {
|
|
76
|
+
sign: 1 | -1;
|
|
77
|
+
data: number[];
|
|
78
|
+
},
|
|
79
|
+
): {
|
|
80
|
+
sign: 1 | -1;
|
|
81
|
+
data: number[];
|
|
82
|
+
} {
|
|
85
83
|
return uniformArrayIntDistribution(min, max, this.internalRng);
|
|
86
84
|
}
|
|
87
|
-
|
|
88
85
|
/**
|
|
89
86
|
* Generate a random floating point number between 0.0 (included) and 1.0 (excluded)
|
|
90
87
|
*/
|
|
@@ -93,7 +90,6 @@ export class MutableRandom {
|
|
|
93
90
|
const b = this.next(27);
|
|
94
91
|
return (a * MutableRandom.DBL_FACTOR + b) * MutableRandom.DBL_DIVISOR;
|
|
95
92
|
}
|
|
96
|
-
|
|
97
93
|
setSeed(seed: number): void {
|
|
98
94
|
this.internalRng.setSeed(seed);
|
|
99
95
|
}
|
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
trimArrayIntInplace,
|
|
10
10
|
} from "@fncts/base/util/rand/distribution/internals/ArrayInt";
|
|
11
11
|
import { uniformArrayIntDistributionInternal } from "@fncts/base/util/rand/distribution/internals/UniformArrayIntDistributionInternal";
|
|
12
|
-
|
|
13
12
|
/** @internal */
|
|
14
13
|
function uniformArrayIntInternal(from: ArrayInt, to: ArrayInt, rng: RandomGenerator): ArrayInt {
|
|
15
14
|
const rangeSize = trimArrayIntInplace(addOneToPositiveArrayInt(substractArrayIntToNew(to, from)));
|
|
@@ -17,7 +16,6 @@ function uniformArrayIntInternal(from: ArrayInt, to: ArrayInt, rng: RandomGenera
|
|
|
17
16
|
const g = uniformArrayIntDistributionInternal(emptyArrayIntData, rangeSize.data, rng);
|
|
18
17
|
return trimArrayIntInplace(addArrayIntToNew({ sign: 1, data: g }, from));
|
|
19
18
|
}
|
|
20
|
-
|
|
21
19
|
/**
|
|
22
20
|
* Uniformly generate random ArrayInt values between `from` (included) and `to` (included)
|
|
23
21
|
*
|
|
@@ -45,5 +43,4 @@ function uniformArrayIntDistribution(from: ArrayInt, to: ArrayInt, rng?: RandomG
|
|
|
45
43
|
return uniformArrayIntInternal(from, to, rng);
|
|
46
44
|
};
|
|
47
45
|
}
|
|
48
|
-
|
|
49
46
|
export { uniformArrayIntDistribution };
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import type Distribution from "@fncts/base/util/rand/distribution/Distribution";
|
|
2
2
|
import type { RandomGenerator } from "@fncts/base/util/rand/generator/RandomGenerator";
|
|
3
|
-
|
|
4
3
|
function uniformBigIntInternal(from: bigint, diff: bigint, rng: RandomGenerator): bigint {
|
|
5
4
|
const MinRng = BigInt(rng.min());
|
|
6
5
|
const NumValues = BigInt(rng.max() - rng.min() + 1);
|
|
7
|
-
|
|
8
6
|
// Number of iterations required to have enough random
|
|
9
7
|
// to build uniform entries in the asked range
|
|
10
8
|
let FinalNumValues = NumValues;
|
|
@@ -14,7 +12,6 @@ function uniformBigIntInternal(from: bigint, diff: bigint, rng: RandomGenerator)
|
|
|
14
12
|
++NumIterations;
|
|
15
13
|
}
|
|
16
14
|
const MaxAcceptedRandom = FinalNumValues - (FinalNumValues % diff);
|
|
17
|
-
|
|
18
15
|
// eslint-disable-next-line no-constant-condition
|
|
19
16
|
while (true) {
|
|
20
17
|
// Aggregate mutiple calls to next() into a single random value
|
|
@@ -29,7 +26,6 @@ function uniformBigIntInternal(from: bigint, diff: bigint, rng: RandomGenerator)
|
|
|
29
26
|
}
|
|
30
27
|
}
|
|
31
28
|
}
|
|
32
|
-
|
|
33
29
|
/**
|
|
34
30
|
* Uniformly generate random bigint values between `from` (included) and `to` (included)
|
|
35
31
|
*
|
|
@@ -58,5 +54,4 @@ function uniformBigIntDistribution(from: bigint, to: bigint, rng?: RandomGenerat
|
|
|
58
54
|
return uniformBigIntInternal(from, diff, rng);
|
|
59
55
|
};
|
|
60
56
|
}
|
|
61
|
-
|
|
62
57
|
export { uniformBigIntDistribution };
|
|
@@ -5,18 +5,15 @@ import type RandomGenerator from "@fncts/base/util/rand/generator/RandomGenerato
|
|
|
5
5
|
import { fromNumberToArrayInt64, substractArrayInt64 } from "@fncts/base/util/rand/distribution/internals/ArrayInt";
|
|
6
6
|
import { uniformArrayIntDistributionInternal } from "@fncts/base/util/rand/distribution/internals/UniformArrayIntDistributionInternal";
|
|
7
7
|
import { uniformIntDistributionInternal } from "@fncts/base/util/rand/distribution/internals/UniformIntDistributionInternal";
|
|
8
|
-
|
|
9
8
|
const sharedA: ArrayInt64 = { sign: 1, data: [0, 0] };
|
|
10
9
|
const sharedB: ArrayInt64 = { sign: 1, data: [0, 0] };
|
|
11
10
|
const sharedC: ArrayInt64 = { sign: 1, data: [0, 0] };
|
|
12
11
|
const sharedData = [0, 0];
|
|
13
|
-
|
|
14
12
|
function uniformLargeIntInternal(from: number, to: number, rangeSize: number, rng: RandomGenerator): number {
|
|
15
13
|
const rangeSizeArrayIntValue =
|
|
16
14
|
rangeSize <= Number.MAX_SAFE_INTEGER
|
|
17
15
|
? fromNumberToArrayInt64(sharedC, rangeSize) // no possible overflow given rangeSize is in a safe range
|
|
18
16
|
: substractArrayInt64(sharedC, fromNumberToArrayInt64(sharedA, to), fromNumberToArrayInt64(sharedB, from)); // rangeSize might be incorrect, we compute a safer range
|
|
19
|
-
|
|
20
17
|
// Adding 1 to the range
|
|
21
18
|
if (rangeSizeArrayIntValue.data[1] === 0xffffffff) {
|
|
22
19
|
// rangeSizeArrayIntValue.length === 2 by construct
|
|
@@ -27,11 +24,9 @@ function uniformLargeIntInternal(from: number, to: number, rangeSize: number, rn
|
|
|
27
24
|
} else {
|
|
28
25
|
rangeSizeArrayIntValue.data[1] += 1;
|
|
29
26
|
}
|
|
30
|
-
|
|
31
27
|
uniformArrayIntDistributionInternal(sharedData, rangeSizeArrayIntValue.data, rng);
|
|
32
28
|
return sharedData[0]! * 0x100000000 + sharedData[1]! + from;
|
|
33
29
|
}
|
|
34
|
-
|
|
35
30
|
function uniformIntInternal(from: number, to: number, rng: RandomGenerator): number {
|
|
36
31
|
const rangeSize = to - from;
|
|
37
32
|
if (rangeSize <= 0xffffffff) {
|
|
@@ -43,7 +38,6 @@ function uniformIntInternal(from: number, to: number, rng: RandomGenerator): num
|
|
|
43
38
|
}
|
|
44
39
|
return uniformLargeIntInternal(from, to, rangeSize, rng);
|
|
45
40
|
}
|
|
46
|
-
|
|
47
41
|
/**
|
|
48
42
|
* Uniformly generate random integer values between `from` (included) and `to` (included)
|
|
49
43
|
*
|
|
@@ -71,5 +65,4 @@ function uniformIntDistribution(from: number, to: number, rng?: RandomGenerator)
|
|
|
71
65
|
return uniformIntInternal(from, to, rng);
|
|
72
66
|
};
|
|
73
67
|
}
|
|
74
|
-
|
|
75
68
|
export { uniformIntDistribution };
|
|
@@ -20,7 +20,6 @@ export type ArrayInt = {
|
|
|
20
20
|
*/
|
|
21
21
|
data: number[];
|
|
22
22
|
};
|
|
23
|
-
|
|
24
23
|
/**
|
|
25
24
|
* Add two ArrayInt
|
|
26
25
|
* @internal
|
|
@@ -48,7 +47,6 @@ export function addArrayIntToNew(arrayIntA: ArrayInt, arrayIntB: ArrayInt): Arra
|
|
|
48
47
|
}
|
|
49
48
|
return { sign: arrayIntA.sign, data: data.reverse() };
|
|
50
49
|
}
|
|
51
|
-
|
|
52
50
|
/**
|
|
53
51
|
* Add one to a given positive ArrayInt
|
|
54
52
|
* @internal
|
|
@@ -67,7 +65,6 @@ export function addOneToPositiveArrayInt(arrayInt: ArrayInt): ArrayInt {
|
|
|
67
65
|
data.unshift(1);
|
|
68
66
|
return arrayInt;
|
|
69
67
|
}
|
|
70
|
-
|
|
71
68
|
/** @internal */
|
|
72
69
|
function isStrictlySmaller(dataA: number[], dataB: number[]): boolean {
|
|
73
70
|
const maxLength = Math.max(dataA.length, dataB.length);
|
|
@@ -81,7 +78,6 @@ function isStrictlySmaller(dataA: number[], dataB: number[]): boolean {
|
|
|
81
78
|
}
|
|
82
79
|
return false;
|
|
83
80
|
}
|
|
84
|
-
|
|
85
81
|
/**
|
|
86
82
|
* Substract two ArrayInt
|
|
87
83
|
* @internal
|
|
@@ -108,7 +104,6 @@ export function substractArrayIntToNew(arrayIntA: ArrayInt, arrayIntB: ArrayInt)
|
|
|
108
104
|
}
|
|
109
105
|
return { sign: arrayIntA.sign, data: data.reverse() };
|
|
110
106
|
}
|
|
111
|
-
|
|
112
107
|
/**
|
|
113
108
|
* Trim uneeded zeros in ArrayInt
|
|
114
109
|
* and uniform notation for zero: {sign: 1, data: [0]}
|
|
@@ -127,12 +122,11 @@ export function trimArrayIntInplace(arrayInt: ArrayInt) {
|
|
|
127
122
|
data.splice(0, firstNonZero);
|
|
128
123
|
return arrayInt;
|
|
129
124
|
}
|
|
130
|
-
|
|
131
125
|
// Helpers specific to 64 bits versions
|
|
132
|
-
|
|
133
126
|
/** @internal */
|
|
134
|
-
export type ArrayInt64 = Required<ArrayInt> & {
|
|
135
|
-
|
|
127
|
+
export type ArrayInt64 = Required<ArrayInt> & {
|
|
128
|
+
data: [number, number];
|
|
129
|
+
};
|
|
136
130
|
/**
|
|
137
131
|
* We only accept safe integers here
|
|
138
132
|
* @internal
|
|
@@ -150,7 +144,6 @@ export function fromNumberToArrayInt64(out: ArrayInt64, n: number): ArrayInt64 {
|
|
|
150
144
|
}
|
|
151
145
|
return out;
|
|
152
146
|
}
|
|
153
|
-
|
|
154
147
|
/**
|
|
155
148
|
* Substract two ArrayInt of 64 bits on 64 bits.
|
|
156
149
|
* With arrayIntA - arrayIntB >= 0
|
|
@@ -163,10 +156,8 @@ export function substractArrayInt64(out: ArrayInt64, arrayIntA: ArrayInt64, arra
|
|
|
163
156
|
const lowB = arrayIntB.data[1];
|
|
164
157
|
const highB = arrayIntB.data[0];
|
|
165
158
|
const signB = arrayIntB.sign;
|
|
166
|
-
|
|
167
159
|
// Requirement: arrayIntA - arrayIntB >= 0
|
|
168
160
|
out.sign = 1;
|
|
169
|
-
|
|
170
161
|
if (signA === 1 && signB === -1) {
|
|
171
162
|
// Operation is a simple sum of arrayIntA + abs(arrayIntB)
|
|
172
163
|
const low = lowA + lowB;
|
|
@@ -176,7 +167,6 @@ export function substractArrayInt64(out: ArrayInt64, arrayIntA: ArrayInt64, arra
|
|
|
176
167
|
return out;
|
|
177
168
|
}
|
|
178
169
|
// signA === -1 with signB === 1 is impossible given: arrayIntA - arrayIntB >= 0
|
|
179
|
-
|
|
180
170
|
// Operation is a substraction
|
|
181
171
|
let lowFirst = lowA;
|
|
182
172
|
let highFirst = highA;
|
|
@@ -2,7 +2,6 @@ import type { ArrayInt } from "@fncts/base/util/rand/distribution/internals/Arra
|
|
|
2
2
|
import type RandomGenerator from "@fncts/base/util/rand/generator/RandomGenerator";
|
|
3
3
|
|
|
4
4
|
import { uniformIntDistributionInternal } from "@fncts/base/util/rand/distribution/internals/UniformIntDistributionInternal";
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* Uniformly generate ArrayInt in range [0 ; rangeSize[
|
|
8
7
|
*
|
|
@@ -18,7 +17,6 @@ export function uniformArrayIntDistributionInternal(
|
|
|
18
17
|
rng: RandomGenerator,
|
|
19
18
|
): ArrayInt["data"] {
|
|
20
19
|
const rangeLength = rangeSize.length;
|
|
21
|
-
|
|
22
20
|
// We iterate until we find a valid value for arrayInt
|
|
23
21
|
// eslint-disable-next-line no-constant-condition
|
|
24
22
|
while (true) {
|
|
@@ -27,7 +25,6 @@ export function uniformArrayIntDistributionInternal(
|
|
|
27
25
|
const indexRangeSize = index === 0 ? rangeSize[0]! + 1 : 0x100000000;
|
|
28
26
|
out[index] = uniformIntDistributionInternal(indexRangeSize, rng);
|
|
29
27
|
}
|
|
30
|
-
|
|
31
28
|
// If in the correct range we can return it
|
|
32
29
|
for (let index = 0; index !== rangeLength; ++index) {
|
|
33
30
|
const current = out[index]!;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { RandomGenerator } from "@fncts/base/util/rand/generator/RandomGenerator";
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* Uniformly generate number in range [0 ; rangeSize[
|
|
5
4
|
* @internal
|
|
@@ -7,7 +6,6 @@ import type { RandomGenerator } from "@fncts/base/util/rand/generator/RandomGene
|
|
|
7
6
|
export function uniformIntDistributionInternal(rangeSize: number, rng: RandomGenerator): number {
|
|
8
7
|
const MinRng = rng.min();
|
|
9
8
|
const NumValues = rng.max() - rng.min() + 1;
|
|
10
|
-
|
|
11
9
|
// Range provided by the RandomGenerator is large enough
|
|
12
10
|
if (rangeSize <= NumValues) {
|
|
13
11
|
const MaxAllowed = NumValues - (NumValues % rangeSize);
|
|
@@ -20,7 +18,6 @@ export function uniformIntDistributionInternal(rangeSize: number, rng: RandomGen
|
|
|
20
18
|
}
|
|
21
19
|
}
|
|
22
20
|
}
|
|
23
|
-
|
|
24
21
|
// Compute number of iterations required to have enough random
|
|
25
22
|
// to build uniform entries in the asked range
|
|
26
23
|
let FinalNumValues = NumValues * NumValues;
|
|
@@ -30,7 +27,6 @@ export function uniformIntDistributionInternal(rangeSize: number, rng: RandomGen
|
|
|
30
27
|
++NumIterations;
|
|
31
28
|
}
|
|
32
29
|
const MaxAcceptedRandom = rangeSize * Math.floor((1 * FinalNumValues) / rangeSize);
|
|
33
|
-
|
|
34
30
|
// eslint-disable-next-line no-constant-condition
|
|
35
31
|
while (true) {
|
|
36
32
|
// Aggregate mutiple calls to next() into a single random value
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/* eslint-disable prefer-const */
|
|
2
|
-
/*
|
|
2
|
+
/*
|
|
3
3
|
Original MT19937 license:
|
|
4
4
|
|
|
5
5
|
A C-program for MT19937, with initialization improved 2002/1/26.
|
|
6
6
|
Coded by Takuji Nishimura and Makoto Matsumoto.
|
|
7
7
|
|
|
8
|
-
Before using, initialize the state by using init_genrand(seed)
|
|
8
|
+
Before using, initialize the state by using init_genrand(seed)
|
|
9
9
|
or init_by_array(init_key, key_length).
|
|
10
10
|
|
|
11
11
|
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
|
|
12
|
-
All rights reserved.
|
|
12
|
+
All rights reserved.
|
|
13
13
|
|
|
14
14
|
Redistribution and use in source and binary forms, with or without
|
|
15
15
|
modification, are permitted provided that the following conditions
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
notice, this list of conditions and the following disclaimer in the
|
|
23
23
|
documentation and/or other materials provided with the distribution.
|
|
24
24
|
|
|
25
|
-
3. The names of its contributors may not be used to endorse or promote
|
|
26
|
-
products derived from this software without specific prior written
|
|
25
|
+
3. The names of its contributors may not be used to endorse or promote
|
|
26
|
+
products derived from this software without specific prior written
|
|
27
27
|
permission.
|
|
28
28
|
|
|
29
29
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
@@ -43,49 +43,38 @@
|
|
|
43
43
|
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
|
|
44
44
|
email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)
|
|
45
45
|
*/
|
|
46
|
-
|
|
47
46
|
import type { RandomGenerator } from "@fncts/base/util/rand/generator/RandomGenerator";
|
|
48
|
-
|
|
49
47
|
const MAX_INT = 4294967296.0;
|
|
50
48
|
const N = 624;
|
|
51
49
|
const M = 397;
|
|
52
50
|
const UPPER_MASK = 0x80000000;
|
|
53
51
|
const LOWER_MASK = 0x7fffffff;
|
|
54
52
|
const MATRIX_A = 0x9908b0df;
|
|
55
|
-
|
|
56
53
|
export class MersenneTwister implements RandomGenerator {
|
|
57
54
|
private mt: Array<number>;
|
|
58
55
|
private mti: number;
|
|
59
|
-
|
|
60
56
|
constructor(seed?: number) {
|
|
61
57
|
this.mt = new Array(N);
|
|
62
58
|
this.mti = N + 1;
|
|
63
59
|
this.setSeed(seed ?? Date.now());
|
|
64
60
|
}
|
|
65
|
-
|
|
66
61
|
setSeed(seed: number) {
|
|
67
62
|
let s: number;
|
|
68
|
-
|
|
69
63
|
this.mt[0] = seed >>> 0;
|
|
70
|
-
|
|
71
64
|
for (this.mti = 1; this.mti < N; this.mti++) {
|
|
72
65
|
s = this.mt[this.mti - 1]! ^ (this.mt[this.mti - 1]! >>> 30);
|
|
73
66
|
this.mt[this.mti] = ((((s & 0xffff0000) >>> 16) * 1812433253) << 16) + (s & 0x0000ffff) * 1812433253 + this.mti;
|
|
74
67
|
this.mt[this.mti] >>>= 0;
|
|
75
68
|
}
|
|
76
69
|
}
|
|
77
|
-
|
|
78
70
|
seedArray(vector: ReadonlyArray<number>) {
|
|
79
71
|
let i = 1,
|
|
80
72
|
j = 0,
|
|
81
73
|
k = N > vector.length ? N : vector.length,
|
|
82
74
|
s: number;
|
|
83
|
-
|
|
84
75
|
this.setSeed(19650218);
|
|
85
|
-
|
|
86
76
|
for (; k > 0; k--) {
|
|
87
77
|
s = this.mt[i - 1]! ^ (this.mt[i - 1]! >>> 30);
|
|
88
|
-
|
|
89
78
|
this.mt[i] =
|
|
90
79
|
(this.mt[i]! ^ (((((s & 0xffff0000) >>> 16) * 1664525) << 16) + (s & 0x0000ffff) * 1664525)) + vector[j]! + j;
|
|
91
80
|
this.mt[i] >>>= 0;
|
|
@@ -99,7 +88,6 @@ export class MersenneTwister implements RandomGenerator {
|
|
|
99
88
|
j = 0;
|
|
100
89
|
}
|
|
101
90
|
}
|
|
102
|
-
|
|
103
91
|
for (k = N - 1; k; k--) {
|
|
104
92
|
s = this.mt[i - 1]! ^ (this.mt[i - 1]! >>> 30);
|
|
105
93
|
this.mt[i] =
|
|
@@ -111,49 +99,38 @@ export class MersenneTwister implements RandomGenerator {
|
|
|
111
99
|
i = 1;
|
|
112
100
|
}
|
|
113
101
|
}
|
|
114
|
-
|
|
115
102
|
this.mt[0] = 0x80000000;
|
|
116
103
|
}
|
|
117
|
-
|
|
118
104
|
next() {
|
|
119
105
|
let y: number,
|
|
120
106
|
kk: number,
|
|
121
107
|
mag01: [number, number] = [0, MATRIX_A];
|
|
122
|
-
|
|
123
108
|
if (this.mti >= N) {
|
|
124
109
|
if (this.mti === N + 1) {
|
|
125
110
|
this.setSeed(5489);
|
|
126
111
|
}
|
|
127
|
-
|
|
128
112
|
for (kk = 0; kk < N - M; kk++) {
|
|
129
113
|
y = (this.mt[kk]! & UPPER_MASK) | (this.mt[kk + 1]! & LOWER_MASK);
|
|
130
114
|
this.mt[kk] = this.mt[kk + M]! ^ (y >>> 1) ^ mag01[y & 1]!;
|
|
131
115
|
}
|
|
132
|
-
|
|
133
116
|
for (; kk < N - 1; kk++) {
|
|
134
117
|
y = (this.mt[kk]! & UPPER_MASK) | (this.mt[kk + 1]! & LOWER_MASK);
|
|
135
118
|
this.mt[kk] = this.mt[kk + (M - N)]! ^ (y >>> 1) ^ mag01[y & 1]!;
|
|
136
119
|
}
|
|
137
|
-
|
|
138
120
|
y = (this.mt[N - 1]! & UPPER_MASK) | (this.mt[0]! & LOWER_MASK);
|
|
139
121
|
this.mt[N - 1] = this.mt[M - 1]! ^ (y >>> 1) ^ mag01[y & 1]!;
|
|
140
122
|
this.mti = 0;
|
|
141
123
|
}
|
|
142
|
-
|
|
143
|
-
y = this.mt[this.mti++]!;
|
|
144
|
-
|
|
124
|
+
y = this.mt[this.mti++]!;
|
|
145
125
|
y ^= y >>> 11;
|
|
146
126
|
y ^= (y << 7) & 0x9d2c5680;
|
|
147
127
|
y ^= (y << 15) & 0xefc60000;
|
|
148
128
|
y ^= y >>> 18;
|
|
149
|
-
|
|
150
129
|
return y >>> 0;
|
|
151
130
|
}
|
|
152
|
-
|
|
153
131
|
min(): number {
|
|
154
132
|
return 0;
|
|
155
133
|
}
|
|
156
|
-
|
|
157
134
|
max(): number {
|
|
158
135
|
return 0xffffffff;
|
|
159
136
|
}
|
|
@@ -5,7 +5,6 @@ export default interface RandomGenerator {
|
|
|
5
5
|
min(): number; //inclusive
|
|
6
6
|
max(): number; //inclusive
|
|
7
7
|
}
|
|
8
|
-
|
|
9
8
|
function generateN(rng: RandomGenerator, num: number): number[] {
|
|
10
9
|
const out: number[] = [];
|
|
11
10
|
for (let idx = 0; idx != num; ++idx) {
|
|
@@ -14,9 +13,7 @@ function generateN(rng: RandomGenerator, num: number): number[] {
|
|
|
14
13
|
}
|
|
15
14
|
return out;
|
|
16
15
|
}
|
|
17
|
-
|
|
18
16
|
function skipN(rng: RandomGenerator, num: number): void {
|
|
19
17
|
generateN(rng, num);
|
|
20
18
|
}
|
|
21
|
-
|
|
22
19
|
export { generateN, RandomGenerator, skipN };
|