Skip to content
Effect 4.0 is here. One ecosystem. Zero dependencies.

Flatten

16 exports Since v1.0.0 Source

Constructors

Signature

declare const alreadyFlat: Flatten<never>

Signature

declare const flattened: <A>(value: A) => Flatten<A>

Signature

declare const neverFlat: Flatten<never>

Mapping

Since v1.0.0

Signature

declare const map: {
<A, B>(f: (a: A) => B): (self: Flatten<A>) => Flatten<B>;
<A, B>(self: Flatten<A>, f: (a: A) => B): Flatten<B>;
}

Model

AlreadyFlat

interface
Since v1.0.0

Represents a FlattenResult where the input was already flat.

Signature

interface AlreadyFlat<A> extends Variance<A> {
readonly _tag: "AlreadyFlat";
}
Since v1.0.0

Because certain documents do not change after removal of newlines, etc, there is no point in creating a Union of the flattened and unflattened versions. All this leads to is the introduction of two possible branches for a layout algorithm to take, resulting in potentially exponential behavior on deeply nested examples.

Signature

type Flatten<A> = Flattened<A> | AlreadyFlat<A> | NeverFlat<A>

Flattened

interface
Since v1.0.0

Represents a FlattenResult where A is likely flatter than the input.

Signature

interface Flattened<A> extends Variance<A> {
readonly _tag: "Flattened";
readonly value: A;
}
Since v1.0.0

Signature

interface FlattenTypeLambda extends TypeLambda {
readonly type: Flatten<unknown>;
}

NeverFlat

interface
Since v1.0.0

Represents a FlattenResult where the input cannot be flattened.

Signature

interface NeverFlat<A> extends Variance<A> {
readonly _tag: "NeverFlat";
}

Other

Since v1.0.0

Refinements

Returns true if the specified Flatten is an AlreadyFlat, false otherwise.

Signature

declare const isAlreadyFlat: <A>(a: Flatten<A>) => a is AlreadyFlat<A>

Returns true if the specified value is a Flatten, false otherwise.

Signature

declare const isFlatten: (u: unknown) => u is Flatten<unknown>

Returns true if the specified Flatten is a Flattened, false otherwise.

Signature

declare const isFlattened: <A>(a: Flatten<A>) => a is Flattened<A>

Returns true if the specified Flatten is a NeverFlat, false otherwise.

Signature

declare const isNeverFlat: <A>(a: Flatten<A>) => a is NeverFlat<A>

Symbol

Signature

declare const FlattenTypeId: unique symbol
Since v1.0.0

Signature

type FlattenTypeId = typeof FlattenTypeId