<S extends Chunk<Chunk<any>>>(self: S): Chunk.Flatten<S>Flattens a chunk of chunks into a single chunk by concatenating all chunks.
Example (Flattening nested chunks)
import { Chunk } from "effect"
const nested = Chunk.make(
Chunk.make(1, 2),
Chunk.make(3, 4, 5),
Chunk.make(6)
)
const flattened = Chunk.flatten(nested)
console.log(Chunk.toArray(flattened)) // [1, 2, 3, 4, 5, 6]
// With empty chunks
const withEmpty = Chunk.make(
Chunk.make(1, 2),
Chunk.empty<number>(),
Chunk.make(3, 4)
)
console.log(Chunk.toArray(Chunk.flatten(withEmpty))) // [1, 2, 3, 4]export const const flatten: <
S extends Chunk<Chunk<any>>
>(
self: S
) => Chunk.Flatten<S>
Flattens a chunk of chunks into a single chunk by concatenating all chunks.
Example (Flattening nested chunks)
import { Chunk } from "effect"
const nested = Chunk.make(
Chunk.make(1, 2),
Chunk.make(3, 4, 5),
Chunk.make(6)
)
const flattened = Chunk.flatten(nested)
console.log(Chunk.toArray(flattened)) // [1, 2, 3, 4, 5, 6]
// With empty chunks
const withEmpty = Chunk.make(
Chunk.make(1, 2),
Chunk.empty<number>(),
Chunk.make(3, 4)
)
console.log(Chunk.toArray(Chunk.flatten(withEmpty))) // [1, 2, 3, 4]
flatten: <function (type parameter) S in <S extends Chunk<Chunk<any>>>(self: S): Chunk.Flatten<S>S extends interface Chunk<out A>A Chunk is an immutable, ordered collection optimized for efficient concatenation and access patterns.
Example (Inspecting chunk values)
import { Chunk } from "effect"
const chunk: Chunk.Chunk<number> = Chunk.make(1, 2, 3)
console.log(chunk.length) // 3
console.log(Chunk.toArray(chunk)) // [1, 2, 3]
A namespace containing utility types for Chunk operations.
Example (Working with Chunk utility types)
import type { Chunk } from "effect"
// Extract the element type from a Chunk
declare const chunk: Chunk.Chunk<string>
type ElementType = Chunk.Chunk.Infer<typeof chunk> // string
// Create a preserving non-emptiness
declare const nonEmptyChunk: Chunk.NonEmptyChunk<number>
type WithString = Chunk.Chunk.With<typeof nonEmptyChunk, string> // Chunk.NonEmptyChunk<string>
Chunk<interface Chunk<out A>A Chunk is an immutable, ordered collection optimized for efficient concatenation and access patterns.
Example (Inspecting chunk values)
import { Chunk } from "effect"
const chunk: Chunk.Chunk<number> = Chunk.make(1, 2, 3)
console.log(chunk.length) // 3
console.log(Chunk.toArray(chunk)) // [1, 2, 3]
A namespace containing utility types for Chunk operations.
Example (Working with Chunk utility types)
import type { Chunk } from "effect"
// Extract the element type from a Chunk
declare const chunk: Chunk.Chunk<string>
type ElementType = Chunk.Chunk.Infer<typeof chunk> // string
// Create a preserving non-emptiness
declare const nonEmptyChunk: Chunk.NonEmptyChunk<number>
type WithString = Chunk.Chunk.With<typeof nonEmptyChunk, string> // Chunk.NonEmptyChunk<string>
Chunk<any>>>(self: S extends Chunk<Chunk<any>>self: function (type parameter) S in <S extends Chunk<Chunk<any>>>(self: S): Chunk.Flatten<S>S) => Chunk.type Chunk<out A>.Flatten<T extends Chunk<Chunk<any>>> = T extends NonEmptyChunk<NonEmptyChunk<infer A>> ? NonEmptyChunk<A> : T extends Chunk<Chunk<infer A>> ? Chunk<A> : neverFlattens a nested Chunk type.
Example (Flattening nested chunk types)
import type { Chunk } from "effect"
declare const nestedChunk: Chunk.Chunk<Chunk.Chunk<number>>
declare const nestedNonEmpty: Chunk.NonEmptyChunk<Chunk.NonEmptyChunk<string>>
type Flattened1 = Chunk.Chunk.Flatten<typeof nestedChunk> // Chunk.Chunk<number>
type Flattened2 = Chunk.Chunk.Flatten<typeof nestedNonEmpty> // Chunk.NonEmptyChunk<string>
Flatten<function (type parameter) S in <S extends Chunk<Chunk<any>>>(self: S): Chunk.Flatten<S>S> = const flatMap: {
<S extends Chunk<any>, T extends Chunk<any>>(
f: (a: Chunk.Infer<S>, i: number) => T
): (
self: S
) => Chunk.AndNonEmpty<S, T, Chunk.Infer<T>>
<A, B>(
self: NonEmptyChunk<A>,
f: (a: A, i: number) => NonEmptyChunk<B>
): NonEmptyChunk<B>
<A, B>(
self: Chunk<A>,
f: (a: A, i: number) => Chunk<B>
): Chunk<B>
}
flatMap(const identity: <A>(a: A) => AReturns its input argument unchanged.
When to use
Use to return a value unchanged where a function is required.
Example (Returning the same value)
import { identity } from "effect"
import * as assert from "node:assert"
assert.deepStrictEqual(identity(5), 5)
identity) as any