ReadonlyArray
Instances
- Alt
- Alternative
- Applicative
- Apply
- Chain
- ChainRecBreadthFirst
- ChainRecDepthFirst
- Compactable
- Extend
- Filterable
- FilterableWithIndex
- Foldable
- FoldableWithIndex
- FromEither
- Functor
- FunctorWithIndex
- Monad
- Pointed
- Traversable
- TraversableWithIndex
- Unfoldable
- Witherable
- Zero
- getDifferenceMagma
- getEq
- getIntersectionSemigroup
- getMonoid
- getOrd
- getSemigroup
- getShow
- getUnionMonoid
- getUnionSemigroup
Constructors
Conversions
Do notation
Error handling
Filtering
- compact
- filter
- filterMap
- filterMapWithIndex
- filterWithIndex
- partition
- partitionMap
- partitionMapWithIndex
- partitionWithIndex
- separate
- wilt
- wither
Folding
Legacy
Lifting
Mapping
Pattern matching
Refinements
Sequencing
Traversing
Type lambdas
Unsafe
Utilities
- Spanned
- ap
- apFirst
- apSecond
- append
- appendW
- chop
- chunksOf
- comprehension
- concat
- concatW
cons(deprecated)- deleteAt
- difference
- dropLeft
- dropLeftWhile
- dropRight
- duplicate
- elem
- empty
- every
- exists
- extend
- filterE
- findFirst
- findFirstMap
- findIndex
- findLast
- findLastIndex
- findLastMap
- head
- init
- insertAt
- intercalate
- intersection
- intersperse
- isOutOfBound
- last
- lefts
- let
- lookup
- modifyAt
- prepend
- prependAll
prependToAll(deprecated)- prependW
range(deprecated)readonlyArray(deprecated)- reverse
- rights
- rotate
- scanLeft
- scanRight
- size
snoc(deprecated)- some
- sort
- sortBy
- spanLeft
- splitAt
- tail
- takeLeft
- takeLeftWhile
- takeRight
- unfold
- union
- uniq
- unzip
- updateAt
- zero
- zip
- zipWith
Instances
Alt
Signature
export declare const Alt: Alt1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Alternative
Signature
export declare const Alternative: Alternative1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Applicative
Signature
export declare const Applicative: Applicative1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Apply
Signature
export declare const Apply: Apply1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Chain
Signature
export declare const Chain: Chain1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
ChainRecBreadthFirst
Signature
export declare const ChainRecBreadthFirst: ChainRec1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
ChainRecDepthFirst
Signature
export declare const ChainRecDepthFirst: ChainRec1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Compactable
Signature
export declare const Compactable: Compactable1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Extend
Signature
export declare const Extend: Extend1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Filterable
Signature
export declare const Filterable: Filterable1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
FilterableWithIndex
Signature
export declare const FilterableWithIndex: FilterableWithIndex1<URI, number>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Foldable
Signature
export declare const Foldable: Foldable1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
FoldableWithIndex
Signature
export declare const FoldableWithIndex: FoldableWithIndex1<URI, number>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
FromEither
Signature
export declare const FromEither: FromEither1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Functor
Signature
export declare const Functor: Functor1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
FunctorWithIndex
Signature
export declare const FunctorWithIndex: FunctorWithIndex1<URI, number>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Monad
Signature
export declare const Monad: Monad1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Pointed
Signature
export declare const Pointed: Pointed1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Traversable
Signature
export declare const Traversable: Traversable1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
TraversableWithIndex
Signature
export declare const TraversableWithIndex: TraversableWithIndex1<URI, number>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Unfoldable
Signature
export declare const Unfoldable: Unfoldable1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Witherable
Signature
export declare const Witherable: Witherable1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Zero
Signature
export declare const Zero: Zero1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
getDifferenceMagma
Signature
export declare const getDifferenceMagma: <A>(E: Eq<A>) => Magma<readonly A[]>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
getEq
Derives an Eq
over the ReadonlyArray
of a given element type from the Eq
of that type. The derived Eq
defines two arrays as equal if all elements of both arrays are compared equal pairwise with the given E
. In case of arrays of different lengths, the result is non equality.
Signature
export declare const getEq: <A>(E: Eq<A>) => Eq<readonly A[]>
Details
- Added in 0.1.0
Example
import * as S from '@fp-tx/core/string'
import { getEq } from '@fp-tx/core/ReadonlyArray'
const E = getEq(S.Eq)
assert.strictEqual(E.equals(['a', 'b'], ['a', 'b']), true)
assert.strictEqual(E.equals(['a'], []), false)
License
- MIT – Copyright (c) 2017-present Giulio Canti
getIntersectionSemigroup
Signature
export declare const getIntersectionSemigroup: <A>(E: Eq<A>) => Semigroup<readonly A[]>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
getMonoid
Returns a Monoid
for ReadonlyArray<A>
.
Signature
export declare const getMonoid: <A = never>() => Monoid<readonly A[]>
Details
- Added in 0.1.0
Example
import { getMonoid } from '@fp-tx/core/ReadonlyArray'
const M = getMonoid<number>()
assert.deepStrictEqual(M.concat([1, 2], [3, 4]), [1, 2, 3, 4])
License
- MIT – Copyright (c) 2017-present Giulio Canti
getOrd
Derives an Ord
over the ReadonlyArray
of a given element type from the Ord
of that type. The ordering between two such arrays is equal to: the first non equal comparison of each arrays elements taken pairwise in increasing order, in case of equality over all the pairwise elements; the longest array is considered the greatest, if both arrays have the same length, the result is equality.
Signature
export declare const getOrd: <A>(O: Ord<A>) => Ord<readonly A[]>
Details
- Added in 0.1.0
Example
import { getOrd } from '@fp-tx/core/ReadonlyArray'
import * as S from '@fp-tx/core/string'
const O = getOrd(S.Ord)
assert.strictEqual(O.compare(['b'], ['a']), 1)
assert.strictEqual(O.compare(['a'], ['a']), 0)
assert.strictEqual(O.compare(['a'], ['b']), -1)
License
- MIT – Copyright (c) 2017-present Giulio Canti
getSemigroup
Signature
export declare const getSemigroup: <A = never>() => Semigroup<readonly A[]>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
getShow
Signature
export declare const getShow: <A>(S: Show<A>) => Show<readonly A[]>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
getUnionMonoid
Signature
export declare const getUnionMonoid: <A>(E: Eq<A>) => Monoid<readonly A[]>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
getUnionSemigroup
Signature
export declare const getUnionSemigroup: <A>(E: Eq<A>) => Semigroup<readonly A[]>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Constructors
makeBy
Return a ReadonlyArray
of length n
with element i
initialized with f(i)
.
Note. n
is normalized to a non negative integer.
Signature
export declare const makeBy: <A>(n: number, f: (i: number) => A) => readonly A[]
Details
- Added in 0.1.0
Example
import { makeBy } from '@fp-tx/core/ReadonlyArray'
const double = (n: number): number => n * 2
assert.deepStrictEqual(makeBy(5, double), [0, 2, 4, 6, 8])
License
- MIT – Copyright (c) 2017-present Giulio Canti
of
Signature
export declare const of: <A>(a: A) => ReadonlyArray<A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
replicate
Create a ReadonlyArray
containing a value repeated the specified number of times.
Note. n
is normalized to a non negative integer.
Signature
export declare const replicate: <A>(n: number, a: A) => readonly A[]
Details
- Added in 0.1.0
Example
import { replicate } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(replicate(3, 'a'), ['a', 'a', 'a'])
License
- MIT – Copyright (c) 2017-present Giulio Canti
Conversions
fromArray
Signature
export declare const fromArray: <A>(as: A[]) => readonly A[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
fromEither
Transforms an Either
to a ReadonlyArray
.
Signature
export declare const fromEither: <A>(fa: Either<unknown, A>) => ReadonlyArray<A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
fromOption
Signature
export declare const fromOption: <A>(fa: Option<A>) => ReadonlyArray<A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
toArray
Signature
export declare const toArray: <A>(as: readonly A[]) => A[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Do notation
Do
Signature
export declare const Do: ReadonlyArray<{}>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
apS
Signature
export declare const apS: <N extends string, A, B>(
name: Exclude<N, keyof A>,
fb: readonly B[],
) => (fa: readonly A[]) => readonly { readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
bind
Signature
export declare const bind: <N extends string, A, B>(
name: Exclude<N, keyof A>,
f: (a: A) => readonly B[],
) => (ma: readonly A[]) => readonly { readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
bindTo
Signature
export declare const bindTo: <N extends string>(name: N) => <A>(fa: readonly A[]) => readonly { readonly [K in N]: A }[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
guard
Signature
export declare const guard: (b: boolean) => readonly void[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Error handling
alt
Identifies an associative operation on a type constructor. It is similar to Semigroup
, except that it applies to types of kind * -> *
.
In case of ReadonlyArray
concatenates the inputs into a single array.
Signature
export declare const alt: <A>(that: LazyArg<ReadonlyArray<A>>) => (fa: ReadonlyArray<A>) => ReadonlyArray<A>
Details
- Added in 0.1.0
Example
import * as RA from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
assert.deepStrictEqual(
pipe(
[1, 2, 3],
RA.alt(() => [4, 5]),
),
[1, 2, 3, 4, 5],
)
License
- MIT – Copyright (c) 2017-present Giulio Canti
altW
Less strict version of alt
.
The W
suffix (short for Widening) means that the return types will be merged.
Signature
export declare const altW: <B>(that: LazyArg<readonly B[]>) => <A>(fa: readonly A[]) => readonly (B | A)[]
Details
- Added in 0.1.0
Example
import * as RA from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
assert.deepStrictEqual(
pipe(
[1, 2, 3],
RA.altW(() => ['a', 'b']),
),
[1, 2, 3, 'a', 'b'],
)
License
- MIT – Copyright (c) 2017-present Giulio Canti
Filtering
compact
Signature
export declare const compact: <A>(fa: ReadonlyArray<Option<A>>) => ReadonlyArray<A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
filter
Signature
export declare const filter: {
<A, B extends A>(refinement: Refinement<A, B>): (as: ReadonlyArray<A>) => ReadonlyArray<B>
<A>(predicate: Predicate<A>): <B extends A>(bs: ReadonlyArray<B>) => ReadonlyArray<B>
<A>(predicate: Predicate<A>): (as: ReadonlyArray<A>) => ReadonlyArray<A>
}
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
filterMap
Signature
export declare const filterMap: <A, B>(f: (a: A) => Option<B>) => (fa: ReadonlyArray<A>) => ReadonlyArray<B>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
filterMapWithIndex
Signature
export declare const filterMapWithIndex: <A, B>(f: (i: number, a: A) => Option<B>) => (fa: readonly A[]) => readonly B[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
filterWithIndex
Signature
export declare const filterWithIndex: {
<A, B extends A>(refinementWithIndex: RefinementWithIndex<number, A, B>): (as: ReadonlyArray<A>) => ReadonlyArray<B>
<A>(predicateWithIndex: PredicateWithIndex<number, A>): <B extends A>(bs: ReadonlyArray<B>) => ReadonlyArray<B>
<A>(predicateWithIndex: PredicateWithIndex<number, A>): (as: ReadonlyArray<A>) => ReadonlyArray<A>
}
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
partition
Signature
export declare const partition: {
<A, B extends A>(
refinement: Refinement<A, B>,
): (as: ReadonlyArray<A>) => Separated<ReadonlyArray<A>, ReadonlyArray<B>>
<A>(predicate: Predicate<A>): <B extends A>(bs: ReadonlyArray<B>) => Separated<ReadonlyArray<B>, ReadonlyArray<B>>
<A>(predicate: Predicate<A>): (as: ReadonlyArray<A>) => Separated<ReadonlyArray<A>, ReadonlyArray<A>>
}
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
partitionMap
Signature
export declare const partitionMap: <A, B, C>(
f: (a: A) => Either<B, C>,
) => (fa: ReadonlyArray<A>) => Separated<ReadonlyArray<B>, ReadonlyArray<C>>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
partitionMapWithIndex
Signature
export declare const partitionMapWithIndex: <A, B, C>(
f: (i: number, a: A) => Either<B, C>,
) => (fa: readonly A[]) => Separated<readonly B[], readonly C[]>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
partitionWithIndex
Signature
export declare const partitionWithIndex: {
<A, B extends A>(
refinementWithIndex: RefinementWithIndex<number, A, B>,
): (as: ReadonlyArray<A>) => Separated<ReadonlyArray<A>, ReadonlyArray<B>>
<A>(
predicateWithIndex: PredicateWithIndex<number, A>,
): <B extends A>(bs: ReadonlyArray<B>) => Separated<ReadonlyArray<B>, ReadonlyArray<B>>
<A>(
predicateWithIndex: PredicateWithIndex<number, A>,
): (as: ReadonlyArray<A>) => Separated<ReadonlyArray<A>, ReadonlyArray<A>>
}
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
separate
Signature
export declare const separate: <A, B>(fa: readonly Either<A, B>[]) => Separated<readonly A[], readonly B[]>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
wilt
Signature
export declare const wilt: PipeableWilt1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
wither
Signature
export declare const wither: PipeableWither1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Folding
foldMap
Signature
export declare const foldMap: <M>(M: Monoid<M>) => <A>(f: (a: A) => M) => (fa: ReadonlyArray<A>) => M
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
foldMapWithIndex
Signature
export declare const foldMapWithIndex: <M>(M: Monoid<M>) => <A>(f: (i: number, a: A) => M) => (fa: readonly A[]) => M
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
reduce
Signature
export declare const reduce: <A, B>(b: B, f: (b: B, a: A) => B) => (fa: ReadonlyArray<A>) => B
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
reduceRight
Signature
export declare const reduceRight: <A, B>(b: B, f: (a: A, b: B) => B) => (fa: ReadonlyArray<A>) => B
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
reduceRightWithIndex
Signature
export declare const reduceRightWithIndex: <A, B>(b: B, f: (i: number, a: A, b: B) => B) => (fa: ReadonlyArray<A>) => B
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
reduceWithIndex
Signature
export declare const reduceWithIndex: <A, B>(b: B, f: (i: number, b: B, a: A) => B) => (fa: ReadonlyArray<A>) => B
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Legacy
chain
Alias of flatMap
.
Signature
export declare const chain: <A, B>(f: (a: A) => ReadonlyArray<B>) => (ma: ReadonlyArray<A>) => ReadonlyArray<B>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Lifting
fromEitherK
Signature
export declare const fromEitherK: <E, A extends ReadonlyArray<unknown>, B>(
f: (...a: A) => Either<E, B>,
) => (...a: A) => ReadonlyArray<B>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
fromOptionK
Signature
export declare const fromOptionK: <A extends readonly unknown[], B>(
f: (...a: A) => Option<B>,
) => (...a: A) => readonly B[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
fromPredicate
Signature
export declare function fromPredicate<A, B extends A>(refinement: Refinement<A, B>): (a: A) => ReadonlyArray<B>
export declare function fromPredicate<A>(predicate: Predicate<A>): <B extends A>(b: B) => ReadonlyArray<B>
export declare function fromPredicate<A>(predicate: Predicate<A>): (a: A) => ReadonlyArray<A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Mapping
flap
Signature
export declare const flap: <A>(a: A) => <B>(fab: readonly ((a: A) => B)[]) => readonly B[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
map
map
can be used to turn functions (a: A) => B
into functions (fa: F<A>) => F<B>
whose argument and return types use the type constructor F
to represent some computational context.
Signature
export declare const map: <A, B>(f: (a: A) => B) => (fa: ReadonlyArray<A>) => ReadonlyArray<B>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
mapWithIndex
Signature
export declare const mapWithIndex: <A, B>(f: (i: number, a: A) => B) => (fa: ReadonlyArray<A>) => ReadonlyArray<B>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Pattern matching
foldLeft
Alias of matchLeft
.
Signature
export declare const foldLeft: <A, B>(
onEmpty: LazyArg<B>,
onNonEmpty: (head: A, tail: ReadonlyArray<A>) => B,
) => (as: ReadonlyArray<A>) => B
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
foldRight
Alias of matchRight
.
Signature
export declare const foldRight: <A, B>(
onEmpty: LazyArg<B>,
onNonEmpty: (init: ReadonlyArray<A>, last: A) => B,
) => (as: ReadonlyArray<A>) => B
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
match
Signature
export declare const match: <B, A>(
onEmpty: LazyArg<B>,
onNonEmpty: (as: ReadonlyNonEmptyArray<A>) => B,
) => (as: ReadonlyArray<A>) => B
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
matchLeft
Break a ReadonlyArray
into its first element and remaining elements.
Signature
export declare const matchLeft: <B, A>(
onEmpty: LazyArg<B>,
onNonEmpty: (head: A, tail: ReadonlyArray<A>) => B,
) => (as: ReadonlyArray<A>) => B
Details
- Added in 0.1.0
Example
import { matchLeft } from '@fp-tx/core/ReadonlyArray'
const len: <A>(as: ReadonlyArray<A>) => number = matchLeft(
() => 0,
(_, tail) => 1 + len(tail),
)
assert.strictEqual(len([1, 2, 3]), 3)
License
- MIT – Copyright (c) 2017-present Giulio Canti
matchLeftW
Less strict version of matchLeft
.
Signature
export declare const matchLeftW: <B, A, C>(
onEmpty: LazyArg<B>,
onNonEmpty: (head: A, tail: readonly A[]) => C,
) => (as: readonly A[]) => B | C
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
matchRight
Break a ReadonlyArray
into its initial elements and the last element.
Signature
export declare const matchRight: <B, A>(
onEmpty: LazyArg<B>,
onNonEmpty: (init: ReadonlyArray<A>, last: A) => B,
) => (as: ReadonlyArray<A>) => B
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
matchRightW
Less strict version of matchRight
.
Signature
export declare const matchRightW: <B, A, C>(
onEmpty: LazyArg<B>,
onNonEmpty: (init: readonly A[], last: A) => C,
) => (as: readonly A[]) => B | C
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
matchW
Less strict version of match
.
The W
suffix (short for Widening) means that the handler return types will be merged.
Signature
export declare const matchW: <B, A, C>(
onEmpty: LazyArg<B>,
onNonEmpty: (as: RNEA.ReadonlyNonEmptyArray<A>) => C,
) => (as: readonly A[]) => B | C
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Refinements
isEmpty
Test whether a ReadonlyArray
is empty.
Signature
export declare const isEmpty: <A>(as: readonly A[]) => as is readonly []
Details
- Added in 0.1.0
Example
import { isEmpty } from '@fp-tx/core/ReadonlyArray'
assert.strictEqual(isEmpty([]), true)
License
- MIT – Copyright (c) 2017-present Giulio Canti
isNonEmpty
Test whether a ReadonlyArray
is non empty.
Signature
export declare const isNonEmpty: <A>(as: ReadonlyArray<A>) => as is ReadonlyNonEmptyArray<A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Sequencing
chainFirst
Composes computations in sequence, using the return value of one computation to determine the next computation and keeping only the result of the first.
Signature
export declare const chainFirst: <A, B>(f: (a: A) => ReadonlyArray<B>) => (first: ReadonlyArray<A>) => ReadonlyArray<A>
Details
- Added in 0.1.0
Example
import * as RA from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
assert.deepStrictEqual(
pipe(
[1, 2, 3],
RA.chainFirst(() => ['a', 'b']),
),
[1, 1, 2, 2, 3, 3],
)
assert.deepStrictEqual(
pipe(
[1, 2, 3],
RA.chainFirst(() => []),
),
[],
)
License
- MIT – Copyright (c) 2017-present Giulio Canti
chainRecBreadthFirst
Signature
export declare const chainRecBreadthFirst: <A, B>(f: (a: A) => readonly Either<A, B>[]) => (a: A) => readonly B[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
chainRecDepthFirst
Signature
export declare const chainRecDepthFirst: <A, B>(f: (a: A) => readonly Either<A, B>[]) => (a: A) => readonly B[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
chainWithIndex
Signature
export declare const chainWithIndex: <A, B>(f: (i: number, a: A) => readonly B[]) => (as: readonly A[]) => readonly B[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
flatMap
Composes computations in sequence, using the return value of one computation to determine the next computation.
Signature
export declare const flatMap: {
<A, B>(f: (a: A, i: number) => ReadonlyArray<B>): (ma: ReadonlyArray<A>) => ReadonlyArray<B>
<A, B>(ma: ReadonlyArray<A>, f: (a: A, i: number) => ReadonlyArray<B>): ReadonlyArray<B>
}
Details
- Added in 0.1.0
Example
import * as RA from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
assert.deepStrictEqual(
pipe(
[1, 2, 3],
RA.flatMap(n => [`a${n}`, `b${n}`]),
),
['a1', 'b1', 'a2', 'b2', 'a3', 'b3'],
)
assert.deepStrictEqual(
pipe(
[1, 2, 3],
RA.flatMap(() => []),
),
[],
)
License
- MIT – Copyright (c) 2017-present Giulio Canti
flatten
Signature
export declare const flatten: <A>(mma: ReadonlyArray<ReadonlyArray<A>>) => ReadonlyArray<A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
traverseWithIndex
Signature
export declare const traverseWithIndex: PipeableTraverseWithIndex1<URI, number>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Traversing
sequence
Signature
export declare const sequence: Traversable1<URI>['sequence']
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
traverse
Signature
export declare const traverse: PipeableTraverse1<URI>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Type lambdas
URI
Signature
export type URI = typeof URI
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
URI
Signature
export declare const URI = 'ReadonlyArray'
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Unsafe
unsafeDeleteAt
Signature
export declare const unsafeDeleteAt: <A>(i: number, as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
unsafeInsertAt
Signature
export declare const unsafeInsertAt: <A>(i: number, a: A, as: ReadonlyArray<A>) => ReadonlyNonEmptyArray<A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
unsafeUpdateAt
Signature
export declare const unsafeUpdateAt: <A>(i: number, a: A, as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
Utilities
Spanned
Signature
export interface Spanned<I, R> {
readonly init: ReadonlyArray<I>
readonly rest: ReadonlyArray<R>
}
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
ap
Signature
export declare const ap: <A>(fa: ReadonlyArray<A>) => <B>(fab: ReadonlyArray<(a: A) => B>) => ReadonlyArray<B>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
apFirst
Combine two effectful actions, keeping only the result of the first.
Signature
export declare const apFirst: <B>(second: readonly B[]) => <A>(first: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
apSecond
Combine two effectful actions, keeping only the result of the second.
Signature
export declare const apSecond: <B>(second: readonly B[]) => <A>(first: readonly A[]) => readonly B[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
append
Append an element to the end of a ReadonlyArray
, creating a new ReadonlyNonEmptyArray
.
Signature
export declare const append: <A>(end: A) => (init: readonly A[]) => RNEA.ReadonlyNonEmptyArray<A>
Details
- Added in 0.1.0
Example
import { append } from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
assert.deepStrictEqual(pipe([1, 2, 3], append(4)), [1, 2, 3, 4])
License
- MIT – Copyright (c) 2017-present Giulio Canti
appendW
Less strict version of append
.
Signature
export declare const appendW: <B>(end: B) => <A>(init: readonly A[]) => RNEA.ReadonlyNonEmptyArray<B | A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
chop
A useful recursion pattern for processing a ReadonlyArray
to produce a new ReadonlyArray
, often used for "chopping" up the input ReadonlyArray
. Typically chop
is called with some function that will consume an initial prefix of the ReadonlyArray
and produce a value and the tail of the ReadonlyArray
.
Signature
export declare const chop: <A, B>(
f: (as: RNEA.ReadonlyNonEmptyArray<A>) => readonly [B, readonly A[]],
) => (as: readonly A[]) => readonly B[]
Details
- Added in 0.1.0
Example
import { Eq } from '@fp-tx/core/Eq'
import * as RA from '@fp-tx/core/ReadonlyArray'
import * as N from '@fp-tx/core/number'
import { pipe } from '@fp-tx/core/function'
const group = <A>(S: Eq<A>): ((as: ReadonlyArray<A>) => ReadonlyArray<ReadonlyArray<A>>) => {
return RA.chop(as => {
const { init, rest } = pipe(
as,
RA.spanLeft((a: A) => S.equals(a, as[0])),
)
return [init, rest]
})
}
assert.deepStrictEqual(group(N.Eq)([1, 1, 2, 3, 3, 4]), [[1, 1], [2], [3, 3], [4]])
License
- MIT – Copyright (c) 2017-present Giulio Canti
chunksOf
Splits a ReadonlyArray
into length-n
pieces. The last piece will be shorter if n
does not evenly divide the length of the ReadonlyArray
. Note that chunksOf(n)([])
is []
, not [[]]
. This is intentional, and is consistent with a recursive definition of chunksOf
; it satisfies the property that:
Whenever n
evenly divides the length of as
.
Signature
export declare const chunksOf: (n: number) => <A>(as: readonly A[]) => readonly RNEA.ReadonlyNonEmptyArray<A>[]
Details
- Added in 0.1.0
Example
import { chunksOf } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(chunksOf(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4], [5]])
License
- MIT – Copyright (c) 2017-present Giulio Canti
comprehension
ReadonlyArray
comprehension.
Signature
export declare function comprehension<A, B, C, D, R>(
input: readonly [ReadonlyArray<A>, ReadonlyArray<B>, ReadonlyArray<C>, ReadonlyArray<D>],
f: (a: A, b: B, c: C, d: D) => R,
g?: (a: A, b: B, c: C, d: D) => boolean,
): ReadonlyArray<R>
export declare function comprehension<A, B, C, R>(
input: readonly [ReadonlyArray<A>, ReadonlyArray<B>, ReadonlyArray<C>],
f: (a: A, b: B, c: C) => R,
g?: (a: A, b: B, c: C) => boolean,
): ReadonlyArray<R>
export declare function comprehension<A, B, R>(
input: readonly [ReadonlyArray<A>, ReadonlyArray<B>],
f: (a: A, b: B) => R,
g?: (a: A, b: B) => boolean,
): ReadonlyArray<R>
export declare function comprehension<A, R>(
input: readonly [ReadonlyArray<A>],
f: (a: A) => R,
g?: (a: A) => boolean,
): ReadonlyArray<R>
Details
- Added in 0.1.0
Example
import { comprehension } from '@fp-tx/core/ReadonlyArray'
import { tuple } from '@fp-tx/core/function'
assert.deepStrictEqual(
comprehension(
[
[1, 2, 3],
['a', 'b'],
],
tuple,
(a, b) => (a + b.length) % 2 === 0,
),
[
[1, 'a'],
[1, 'b'],
[3, 'a'],
[3, 'b'],
],
)
License
- MIT – Copyright (c) 2017-present Giulio Canti
concat
Signature
export declare const concat: <A>(second: ReadonlyArray<A>) => (first: ReadonlyArray<A>) => ReadonlyArray<A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
concatW
Signature
export declare const concatW: <B>(second: readonly B[]) => <A>(first: readonly A[]) => readonly (B | A)[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
cons
cons
Use prepend
instead.
Signature
export declare const cons: typeof RNEA.cons
Details
- Added in 0.1.0
- Deprecated
License
- MIT – Copyright (c) 2017-present Giulio Canti
deleteAt
Delete the element at the specified index, creating a new array, or returning None
if the index is out of bounds
Signature
export declare const deleteAt: (i: number) => <A>(as: readonly A[]) => Option<readonly A[]>
Details
- Added in 0.1.0
Example
import { deleteAt } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
assert.deepStrictEqual(deleteAt(0)([1, 2, 3]), some([2, 3]))
assert.deepStrictEqual(deleteAt(1)([]), none)
License
- MIT – Copyright (c) 2017-present Giulio Canti
difference
Creates an array of array values not included in the other given array using a Eq
for equality comparisons. The order and references of result values are determined by the first array.
Signature
export declare function difference<A>(E: Eq<A>): {
(xs: ReadonlyArray<A>): (ys: ReadonlyArray<A>) => ReadonlyArray<A>
(xs: ReadonlyArray<A>, ys: ReadonlyArray<A>): ReadonlyArray<A>
}
Details
- Added in 0.1.0
Example
import { difference } from '@fp-tx/core/ReadonlyArray'
import * as N from '@fp-tx/core/number'
import { pipe } from '@fp-tx/core/function'
assert.deepStrictEqual(pipe([1, 2], difference(N.Eq)([2, 3])), [1])
License
- MIT – Copyright (c) 2017-present Giulio Canti
dropLeft
Drop a max number of elements from the start of an ReadonlyArray
, creating a new ReadonlyArray
.
Note. n
is normalized to a non negative integer.
Signature
export declare const dropLeft: (n: number) => <A>(as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
Example
import * as RA from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
const input: ReadonlyArray<number> = [1, 2, 3]
assert.deepStrictEqual(pipe(input, RA.dropLeft(2)), [3])
assert.strictEqual(pipe(input, RA.dropLeft(0)), input)
assert.strictEqual(pipe(input, RA.dropLeft(-1)), input)
License
- MIT – Copyright (c) 2017-present Giulio Canti
dropLeftWhile
Remove the longest initial subarray for which all element satisfy the specified predicate, creating a new array
Signature
export declare function dropLeftWhile<A, B extends A>(
refinement: Refinement<A, B>,
): (as: ReadonlyArray<A>) => ReadonlyArray<B>
export declare function dropLeftWhile<A>(
predicate: Predicate<A>,
): <B extends A>(bs: ReadonlyArray<B>) => ReadonlyArray<B>
export declare function dropLeftWhile<A>(predicate: Predicate<A>): (as: ReadonlyArray<A>) => ReadonlyArray<A>
Details
- Added in 0.1.0
Example
import { dropLeftWhile } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(dropLeftWhile((n: number) => n % 2 === 1)([1, 3, 2, 4, 5]), [2, 4, 5])
License
- MIT – Copyright (c) 2017-present Giulio Canti
dropRight
Drop a max number of elements from the end of an ReadonlyArray
, creating a new ReadonlyArray
.
Note. n
is normalized to a non negative integer.
Signature
export declare const dropRight: (n: number) => <A>(as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
Example
import * as RA from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
const input: ReadonlyArray<number> = [1, 2, 3]
assert.deepStrictEqual(pipe(input, RA.dropRight(2)), [1])
assert.strictEqual(pipe(input, RA.dropRight(0)), input)
assert.strictEqual(pipe(input, RA.dropRight(-1)), input)
License
- MIT – Copyright (c) 2017-present Giulio Canti
duplicate
Signature
export declare const duplicate: <A>(wa: ReadonlyArray<A>) => ReadonlyArray<ReadonlyArray<A>>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
elem
Test if a value is a member of an array. Takes a Eq<A>
as a single argument which returns the function to use to search for a value of type A
in an array of type ReadonlyArray<A>
.
Signature
export declare function elem<A>(E: Eq<A>): {
(a: A): (as: ReadonlyArray<A>) => boolean
(a: A, as: ReadonlyArray<A>): boolean
}
Details
- Added in 0.1.0
Example
import { elem } from '@fp-tx/core/ReadonlyArray'
import * as N from '@fp-tx/core/number'
import { pipe } from '@fp-tx/core/function'
assert.strictEqual(pipe([1, 2, 3], elem(N.Eq)(2)), true)
assert.strictEqual(pipe([1, 2, 3], elem(N.Eq)(0)), false)
License
- MIT – Copyright (c) 2017-present Giulio Canti
empty
An empty array
Signature
export declare const empty: ReadonlyArray<never>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
every
Check if a predicate holds true for every array member.
Signature
export declare function every<A, B extends A>(
refinement: Refinement<A, B>,
): Refinement<ReadonlyArray<A>, ReadonlyArray<B>>
export declare function every<A>(predicate: Predicate<A>): Predicate<ReadonlyArray<A>>
Details
- Added in 0.1.0
Example
import { every } from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
const isPositive = (n: number): boolean => n > 0
assert.deepStrictEqual(pipe([1, 2, 3], every(isPositive)), true)
assert.deepStrictEqual(pipe([1, 2, -3], every(isPositive)), false)
License
- MIT – Copyright (c) 2017-present Giulio Canti
exists
Alias of some
Signature
export declare const exists: <A>(
predicate: Predicate<A>,
) => (as: ReadonlyArray<A>) => as is RNEA.ReadonlyNonEmptyArray<A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
extend
Signature
export declare const extend: <A, B>(f: (fa: ReadonlyArray<A>) => B) => (wa: ReadonlyArray<A>) => ReadonlyArray<B>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
filterE
Filter values inside a context.
Signature
export declare const filterE: import('./Witherable.js').FilterE1<'ReadonlyArray'>
Details
- Added in 0.1.0
Example
import { pipe } from '@fp-tx/core/function'
import * as RA from '@fp-tx/core/ReadonlyArray'
import * as T from '@fp-tx/core/Task'
const filterE = RA.filterE(T.ApplicativePar)
async function test() {
assert.deepStrictEqual(
await pipe(
[-1, 2, 3],
filterE(n => T.of(n > 0)),
)(),
[2, 3],
)
}
test()
License
- MIT – Copyright (c) 2017-present Giulio Canti
findFirst
Find the first element which satisfies a predicate (or a refinement) function
Signature
export declare function findFirst<A, B extends A>(refinement: Refinement<A, B>): (as: ReadonlyArray<A>) => Option<B>
export declare function findFirst<A>(predicate: Predicate<A>): <B extends A>(bs: ReadonlyArray<B>) => Option<B>
export declare function findFirst<A>(predicate: Predicate<A>): (as: ReadonlyArray<A>) => Option<A>
Details
- Added in 0.1.0
Example
import { findFirst } from '@fp-tx/core/ReadonlyArray'
import { some } from '@fp-tx/core/Option'
type X = {
readonly a: number
readonly b: number
}
assert.deepStrictEqual(
findFirst((x: X) => x.a === 1)([
{ a: 1, b: 1 },
{ a: 1, b: 2 },
]),
some({ a: 1, b: 1 }),
)
License
- MIT – Copyright (c) 2017-present Giulio Canti
findFirstMap
Find the first element returned by an option based selector function
Signature
export declare const findFirstMap: <A, B>(f: (a: A) => Option<B>) => (as: readonly A[]) => Option<B>
Details
- Added in 0.1.0
Example
import { findFirstMap } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
interface Person {
readonly name: string
readonly age?: number
}
const persons: ReadonlyArray<Person> = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]
// returns the name of the first person that has an age
assert.deepStrictEqual(
findFirstMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons),
some('Mary'),
)
License
- MIT – Copyright (c) 2017-present Giulio Canti
findIndex
Find the first index for which a predicate holds
Signature
export declare const findIndex: <A>(predicate: Predicate<A>) => (as: readonly A[]) => Option<number>
Details
- Added in 0.1.0
Example
import { findIndex } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
assert.deepStrictEqual(findIndex((n: number) => n === 2)([1, 2, 3]), some(1))
assert.deepStrictEqual(findIndex((n: number) => n === 2)([]), none)
License
- MIT – Copyright (c) 2017-present Giulio Canti
findLast
Find the last element which satisfies a predicate function
Signature
export declare function findLast<A, B extends A>(refinement: Refinement<A, B>): (as: ReadonlyArray<A>) => Option<B>
export declare function findLast<A>(predicate: Predicate<A>): <B extends A>(bs: ReadonlyArray<B>) => Option<B>
export declare function findLast<A>(predicate: Predicate<A>): (as: ReadonlyArray<A>) => Option<A>
Details
- Added in 0.1.0
Example
import { findLast } from '@fp-tx/core/ReadonlyArray'
import { some } from '@fp-tx/core/Option'
type X = {
readonly a: number
readonly b: number
}
assert.deepStrictEqual(
findLast((x: X) => x.a === 1)([
{ a: 1, b: 1 },
{ a: 1, b: 2 },
]),
some({ a: 1, b: 2 }),
)
License
- MIT – Copyright (c) 2017-present Giulio Canti
findLastIndex
Returns the index of the last element of the list which matches the predicate
Signature
export declare const findLastIndex: <A>(predicate: Predicate<A>) => (as: readonly A[]) => Option<number>
Details
- Added in 0.1.0
Example
import { findLastIndex } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
interface X {
readonly a: number
readonly b: number
}
const xs: ReadonlyArray<X> = [
{ a: 1, b: 0 },
{ a: 1, b: 1 },
]
assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 1)(xs), some(1))
assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 4)(xs), none)
License
- MIT – Copyright (c) 2017-present Giulio Canti
findLastMap
Find the last element returned by an option based selector function
Signature
export declare const findLastMap: <A, B>(f: (a: A) => Option<B>) => (as: readonly A[]) => Option<B>
Details
- Added in 0.1.0
Example
import { findLastMap } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
interface Person {
readonly name: string
readonly age?: number
}
const persons: ReadonlyArray<Person> = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]
// returns the name of the last person that has an age
assert.deepStrictEqual(
findLastMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons),
some('Joey'),
)
License
- MIT – Copyright (c) 2017-present Giulio Canti
head
Get the first element in an array, or None
if the array is empty
Signature
export declare const head: <A>(as: readonly A[]) => Option<A>
Details
- Added in 0.1.0
Example
import { head } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
assert.deepStrictEqual(head([1, 2, 3]), some(1))
assert.deepStrictEqual(head([]), none)
License
- MIT – Copyright (c) 2017-present Giulio Canti
init
Get all but the last element of an array, creating a new array, or None
if the array is empty
Signature
export declare const init: <A>(as: readonly A[]) => Option<readonly A[]>
Details
- Added in 0.1.0
Example
import { init } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
assert.deepStrictEqual(init([1, 2, 3]), some([1, 2]))
assert.deepStrictEqual(init([]), none)
License
- MIT – Copyright (c) 2017-present Giulio Canti
insertAt
Insert an element at the specified index, creating a new array, or returning None
if the index is out of bounds
Signature
export declare const insertAt: <A>(i: number, a: A) => (as: readonly A[]) => Option<RNEA.ReadonlyNonEmptyArray<A>>
Details
- Added in 0.1.0
Example
import { insertAt } from '@fp-tx/core/ReadonlyArray'
import { some } from '@fp-tx/core/Option'
assert.deepStrictEqual(insertAt(2, 5)([1, 2, 3, 4]), some([1, 2, 5, 3, 4]))
License
- MIT – Copyright (c) 2017-present Giulio Canti
intercalate
Places an element in between members of a ReadonlyArray
, then folds the results using the provided Monoid
.
Signature
export declare const intercalate: <A>(M: Monoid<A>) => (middle: A) => (as: readonly A[]) => A
Details
- Added in 0.1.0
Example
import * as S from '@fp-tx/core/string'
import { intercalate } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(intercalate(S.Monoid)('-')(['a', 'b', 'c']), 'a-b-c')
License
- MIT – Copyright (c) 2017-present Giulio Canti
intersection
Creates an array of unique values that are included in all given arrays using a Eq
for equality comparisons. The order and references of result values are determined by the first array.
Signature
export declare function intersection<A>(E: Eq<A>): {
(xs: ReadonlyArray<A>): (ys: ReadonlyArray<A>) => ReadonlyArray<A>
(xs: ReadonlyArray<A>, ys: ReadonlyArray<A>): ReadonlyArray<A>
}
Details
- Added in 0.1.0
Example
import { intersection } from '@fp-tx/core/ReadonlyArray'
import * as N from '@fp-tx/core/number'
import { pipe } from '@fp-tx/core/function'
assert.deepStrictEqual(pipe([1, 2], intersection(N.Eq)([2, 3])), [2])
License
- MIT – Copyright (c) 2017-present Giulio Canti
intersperse
Places an element in between members of an array
Signature
export declare const intersperse: <A>(middle: A) => (as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
Example
import { intersperse } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])
License
- MIT – Copyright (c) 2017-present Giulio Canti
isOutOfBound
Test whether an array contains a particular index
Signature
export declare const isOutOfBound: <A>(i: number, as: ReadonlyArray<A>) => boolean
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
last
Get the last element in an array, or None
if the array is empty
Signature
export declare const last: <A>(as: readonly A[]) => Option<A>
Details
- Added in 0.1.0
Example
import { last } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
assert.deepStrictEqual(last([1, 2, 3]), some(3))
assert.deepStrictEqual(last([]), none)
License
- MIT – Copyright (c) 2017-present Giulio Canti
lefts
Extracts from an array of Either
all the Left
elements. All the Left
elements are extracted in order
Signature
export declare const lefts: <E, A>(as: readonly Either<E, A>[]) => readonly E[]
Details
- Added in 0.1.0
Example
import { lefts } from '@fp-tx/core/ReadonlyArray'
import { left, right } from '@fp-tx/core/Either'
assert.deepStrictEqual(lefts([right(1), left('foo'), right(2)]), ['foo'])
License
- MIT – Copyright (c) 2017-present Giulio Canti
let
Signature
export declare const let_: <N extends string, A, B>(
name: Exclude<N, keyof A>,
f: (a: A) => B,
) => (fa: readonly A[]) => readonly { readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }[]
lookup
This function provides a safe way to read a value at a particular index from an array
Signature
export declare function lookup(i: number): <A>(as: ReadonlyArray<A>) => Option<A>
export declare function lookup<A>(i: number, as: ReadonlyArray<A>): Option<A>
Details
- Added in 0.1.0
Example
import { lookup } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
import { pipe } from '@fp-tx/core/function'
assert.deepStrictEqual(pipe([1, 2, 3], lookup(1)), some(2))
assert.deepStrictEqual(pipe([1, 2, 3], lookup(3)), none)
License
- MIT – Copyright (c) 2017-present Giulio Canti
modifyAt
Apply a function to the element at the specified index, creating a new array, or returning None
if the index is out of bounds
Signature
export declare const modifyAt: <A>(i: number, f: (a: A) => A) => (as: readonly A[]) => Option<readonly A[]>
Details
- Added in 0.1.0
Example
import { modifyAt } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
const double = (x: number): number => x * 2
assert.deepStrictEqual(modifyAt(1, double)([1, 2, 3]), some([1, 4, 3]))
assert.deepStrictEqual(modifyAt(1, double)([]), none)
License
- MIT – Copyright (c) 2017-present Giulio Canti
prepend
Prepend an element to the front of a ReadonlyArray
, creating a new ReadonlyNonEmptyArray
.
Signature
export declare const prepend: <A>(head: A) => (tail: readonly A[]) => RNEA.ReadonlyNonEmptyArray<A>
Details
- Added in 0.1.0
Example
import { prepend } from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
assert.deepStrictEqual(pipe([2, 3, 4], prepend(1)), [1, 2, 3, 4])
License
- MIT – Copyright (c) 2017-present Giulio Canti
prependAll
Prepend an element to every member of an array
Signature
export declare const prependAll: <A>(middle: A) => (as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
Example
import { prependAll } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])
License
- MIT – Copyright (c) 2017-present Giulio Canti
prependToAll
prependToAll
Use prependAll
instead.
Signature
export declare const prependToAll: <A>(middle: A) => (as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
- Deprecated
License
- MIT – Copyright (c) 2017-present Giulio Canti
prependW
Less strict version of prepend
.
Signature
export declare const prependW: <B>(head: B) => <A>(tail: readonly A[]) => RNEA.ReadonlyNonEmptyArray<B | A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
range
range
Use ReadonlyNonEmptyArray
module instead.
Signature
export declare const range: (start: number, end: number) => RNEA.ReadonlyNonEmptyArray<number>
Details
- Added in 0.1.0
- Deprecated
License
- MIT – Copyright (c) 2017-present Giulio Canti
readonlyArray
readonlyArray
This instance is deprecated, use small, specific instances instead. For example if a function needs a Functor
instance, pass RA.Functor
instead of RA.readonlyArray
Signature
export declare const readonlyArray: FunctorWithIndex1<URI, number> &
Monad1<URI> &
Unfoldable1<URI> &
Alternative1<URI> &
Extend1<URI> &
FilterableWithIndex1<URI, number> &
FoldableWithIndex1<URI, number> &
TraversableWithIndex1<URI, number> &
Witherable1<URI>
Details
- Added in 0.1.0
- Deprecated
License
- MIT – Copyright (c) 2017-present Giulio Canti
reverse
Reverse an array, creating a new array
Signature
export declare const reverse: <A>(as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
Example
import { reverse } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(reverse([1, 2, 3]), [3, 2, 1])
License
- MIT – Copyright (c) 2017-present Giulio Canti
rights
Extracts from an array of Either
all the Right
elements. All the Right
elements are extracted in order
Signature
export declare const rights: <E, A>(as: readonly Either<E, A>[]) => readonly A[]
Details
- Added in 0.1.0
Example
import { rights } from '@fp-tx/core/ReadonlyArray'
import { right, left } from '@fp-tx/core/Either'
assert.deepStrictEqual(rights([right(1), left('foo'), right(2)]), [1, 2])
License
- MIT – Copyright (c) 2017-present Giulio Canti
rotate
Rotate a ReadonlyArray
by n
steps.
Signature
export declare const rotate: (n: number) => <A>(as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
Example
import { rotate } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])
License
- MIT – Copyright (c) 2017-present Giulio Canti
scanLeft
Same as reduce
but it carries over the intermediate steps.
Signature
export declare const scanLeft: <A, B>(b: B, f: (b: B, a: A) => B) => (as: readonly A[]) => RNEA.ReadonlyNonEmptyArray<B>
Details
- Added in 0.1.0
Example
import { scanLeft } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(scanLeft(10, (b, a: number) => b - a)([1, 2, 3]), [10, 9, 7, 4])
License
- MIT – Copyright (c) 2017-present Giulio Canti
scanRight
Fold an array from the right, keeping all intermediate results instead of only the final result
Signature
export declare const scanRight: <A, B>(
b: B,
f: (a: A, b: B) => B,
) => (as: readonly A[]) => RNEA.ReadonlyNonEmptyArray<B>
Details
- Added in 0.1.0
Example
import { scanRight } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(scanRight(10, (a: number, b) => b - a)([1, 2, 3]), [4, 5, 7, 10])
License
- MIT – Copyright (c) 2017-present Giulio Canti
size
Calculate the number of elements in a ReadonlyArray
.
Signature
export declare const size: <A>(as: readonly A[]) => number
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
snoc
snoc
Use append
instead.
Signature
export declare const snoc: <A>(init: readonly A[], end: A) => RNEA.ReadonlyNonEmptyArray<A>
Details
- Added in 0.1.0
- Deprecated
License
- MIT – Copyright (c) 2017-present Giulio Canti
some
Check if a predicate holds true for any array member.
Signature
export declare const some: <A>(predicate: Predicate<A>) => (as: readonly A[]) => as is RNEA.ReadonlyNonEmptyArray<A>
Details
- Added in 0.1.0
Example
import { some } from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
const isPositive = (n: number): boolean => n > 0
assert.deepStrictEqual(pipe([-1, -2, 3], some(isPositive)), true)
assert.deepStrictEqual(pipe([-1, -2, -3], some(isPositive)), false)
License
- MIT – Copyright (c) 2017-present Giulio Canti
sort
Sort the elements of an array in increasing order, creating a new array
Signature
export declare const sort: <B>(O: Ord<B>) => <A extends B>(as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
Example
import { sort } from '@fp-tx/core/ReadonlyArray'
import * as N from '@fp-tx/core/number'
assert.deepStrictEqual(sort(N.Ord)([3, 2, 1]), [1, 2, 3])
License
- MIT – Copyright (c) 2017-present Giulio Canti
sortBy
Sort the elements of an array in increasing order, where elements are compared using first ords[0]
, then ords[1]
, etc...
Signature
export declare const sortBy: <B>(ords: readonly Ord<B>[]) => <A extends B>(as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
Example
import { sortBy } from '@fp-tx/core/ReadonlyArray'
import { contramap } from '@fp-tx/core/Ord'
import * as S from '@fp-tx/core/string'
import * as N from '@fp-tx/core/number'
import { pipe } from '@fp-tx/core/function'
interface Person {
readonly name: string
readonly age: number
}
const byName = pipe(
S.Ord,
contramap((p: Person) => p.name),
)
const byAge = pipe(
N.Ord,
contramap((p: Person) => p.age),
)
const sortByNameByAge = sortBy([byName, byAge])
const persons = [
{ name: 'a', age: 1 },
{ name: 'b', age: 3 },
{ name: 'c', age: 2 },
{ name: 'b', age: 2 },
]
assert.deepStrictEqual(sortByNameByAge(persons), [
{ name: 'a', age: 1 },
{ name: 'b', age: 2 },
{ name: 'b', age: 3 },
{ name: 'c', age: 2 },
])
License
- MIT – Copyright (c) 2017-present Giulio Canti
spanLeft
Split an array into two parts:
- The longest initial subarray for which all elements satisfy the specified predicate 2. The remaining elements
Signature
export declare function spanLeft<A, B extends A>(refinement: Refinement<A, B>): (as: ReadonlyArray<A>) => Spanned<B, A>
export declare function spanLeft<A>(predicate: Predicate<A>): <B extends A>(bs: ReadonlyArray<B>) => Spanned<B, B>
export declare function spanLeft<A>(predicate: Predicate<A>): (as: ReadonlyArray<A>) => Spanned<A, A>
Details
- Added in 0.1.0
Example
import { spanLeft } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(spanLeft((n: number) => n % 2 === 1)([1, 3, 2, 4, 5]), { init: [1, 3], rest: [2, 4, 5] })
License
- MIT – Copyright (c) 2017-present Giulio Canti
splitAt
Splits a ReadonlyArray
into two pieces, the first piece has max n
elements.
Signature
export declare const splitAt: (n: number) => <A>(as: readonly A[]) => readonly [readonly A[], readonly A[]]
Details
- Added in 0.1.0
Example
import { splitAt } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(splitAt(2)([1, 2, 3, 4, 5]), [
[1, 2],
[3, 4, 5],
])
License
- MIT – Copyright (c) 2017-present Giulio Canti
tail
Get all but the first element of an array, creating a new array, or None
if the array is empty
Signature
export declare const tail: <A>(as: readonly A[]) => Option<readonly A[]>
Details
- Added in 0.1.0
Example
import { tail } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
assert.deepStrictEqual(tail([1, 2, 3]), some([2, 3]))
assert.deepStrictEqual(tail([]), none)
License
- MIT – Copyright (c) 2017-present Giulio Canti
takeLeft
Keep only a max number of elements from the start of an ReadonlyArray
, creating a new ReadonlyArray
.
Note. n
is normalized to a non negative integer.
Signature
export declare const takeLeft: (n: number) => <A>(as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
Example
import * as RA from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
const input: ReadonlyArray<number> = [1, 2, 3]
assert.deepStrictEqual(pipe(input, RA.takeLeft(2)), [1, 2])
// out of bounds
assert.strictEqual(pipe(input, RA.takeLeft(4)), input)
assert.strictEqual(pipe(input, RA.takeLeft(-1)), input)
License
- MIT – Copyright (c) 2017-present Giulio Canti
takeLeftWhile
Calculate the longest initial subarray for which all element satisfy the specified predicate, creating a new array
Signature
export declare function takeLeftWhile<A, B extends A>(
refinement: Refinement<A, B>,
): (as: ReadonlyArray<A>) => ReadonlyArray<B>
export declare function takeLeftWhile<A>(
predicate: Predicate<A>,
): <B extends A>(bs: ReadonlyArray<B>) => ReadonlyArray<B>
export declare function takeLeftWhile<A>(predicate: Predicate<A>): (as: ReadonlyArray<A>) => ReadonlyArray<A>
Details
- Added in 0.1.0
Example
import { takeLeftWhile } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(takeLeftWhile((n: number) => n % 2 === 0)([2, 4, 3, 6]), [2, 4])
License
- MIT – Copyright (c) 2017-present Giulio Canti
takeRight
Keep only a max number of elements from the end of an ReadonlyArray
, creating a new ReadonlyArray
.
Note. n
is normalized to a non negative integer.
Signature
export declare const takeRight: (n: number) => <A>(as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
Example
import * as RA from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
const input: ReadonlyArray<number> = [1, 2, 3]
assert.deepStrictEqual(pipe(input, RA.takeRight(2)), [2, 3])
// out of bounds
assert.strictEqual(pipe(input, RA.takeRight(4)), input)
assert.strictEqual(pipe(input, RA.takeRight(-1)), input)
License
- MIT – Copyright (c) 2017-present Giulio Canti
unfold
Signature
export declare const unfold: <A, B>(b: B, f: (b: B) => Option<readonly [A, B]>) => readonly A[]
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
union
Creates an array of unique values, in order, from all given arrays using a Eq
for equality comparisons
Signature
export declare function union<A>(E: Eq<A>): {
(xs: ReadonlyArray<A>): (ys: ReadonlyArray<A>) => ReadonlyArray<A>
(xs: ReadonlyArray<A>, ys: ReadonlyArray<A>): ReadonlyArray<A>
}
Details
- Added in 0.1.0
Example
import { union } from '@fp-tx/core/ReadonlyArray'
import * as N from '@fp-tx/core/number'
import { pipe } from '@fp-tx/core/function'
assert.deepStrictEqual(pipe([1, 2], union(N.Eq)([2, 3])), [1, 2, 3])
License
- MIT – Copyright (c) 2017-present Giulio Canti
uniq
Remove duplicates from an array, keeping the first occurrence of an element.
Signature
export declare const uniq: <A>(E: Eq<A>) => (as: readonly A[]) => readonly A[]
Details
- Added in 0.1.0
Example
import { uniq } from '@fp-tx/core/ReadonlyArray'
import * as N from '@fp-tx/core/number'
assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])
License
- MIT – Copyright (c) 2017-present Giulio Canti
unzip
The function is reverse of zip
. Takes an array of pairs and return two corresponding arrays
Signature
export declare const unzip: <A, B>(as: readonly (readonly [A, B])[]) => readonly [readonly A[], readonly B[]]
Details
- Added in 0.1.0
Example
import { unzip } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(
unzip([
[1, 'a'],
[2, 'b'],
[3, 'c'],
]),
[
[1, 2, 3],
['a', 'b', 'c'],
],
)
License
- MIT – Copyright (c) 2017-present Giulio Canti
updateAt
Change the element at the specified index, creating a new array, or returning None
if the index is out of bounds
Signature
export declare const updateAt: <A>(i: number, a: A) => (as: readonly A[]) => Option<readonly A[]>
Details
- Added in 0.1.0
Example
import { updateAt } from '@fp-tx/core/ReadonlyArray'
import { some, none } from '@fp-tx/core/Option'
assert.deepStrictEqual(updateAt(1, 1)([1, 2, 3]), some([1, 1, 3]))
assert.deepStrictEqual(updateAt(1, 1)([]), none)
License
- MIT – Copyright (c) 2017-present Giulio Canti
zero
Signature
export declare const zero: <A>() => ReadonlyArray<A>
Details
- Added in 0.1.0
License
- MIT – Copyright (c) 2017-present Giulio Canti
zip
Takes two arrays and returns an array of corresponding pairs. If one input array is short, excess elements of the longer array are discarded
Signature
export declare function zip<B>(bs: ReadonlyArray<B>): <A>(as: ReadonlyArray<A>) => ReadonlyArray<readonly [A, B]>
export declare function zip<A, B>(as: ReadonlyArray<A>, bs: ReadonlyArray<B>): ReadonlyArray<readonly [A, B]>
Details
- Added in 0.1.0
Example
import { zip } from '@fp-tx/core/ReadonlyArray'
import { pipe } from '@fp-tx/core/function'
assert.deepStrictEqual(pipe([1, 2, 3], zip(['a', 'b', 'c', 'd'])), [
[1, 'a'],
[2, 'b'],
[3, 'c'],
])
License
- MIT – Copyright (c) 2017-present Giulio Canti
zipWith
Apply a function to pairs of elements at the same index in two arrays, collecting the results in a new array. If one input array is short, excess elements of the longer array are discarded.
Signature
export declare const zipWith: <A, B, C>(fa: readonly A[], fb: readonly B[], f: (a: A, b: B) => C) => readonly C[]
Details
- Added in 0.1.0
Example
import { zipWith } from '@fp-tx/core/ReadonlyArray'
assert.deepStrictEqual(
zipWith([1, 2, 3], ['a', 'b', 'c', 'd'], (n, s) => s + n),
['a1', 'b2', 'c3'],
)
License
- MIT – Copyright (c) 2017-present Giulio Canti