Skip to content

Flatten

16 exports Added in v1.0.0 Source

Constructors

alreadyFlat

Added in v1.0.0 Source

Signature

declare const alreadyFlat: Flatten<never>;

flattened

Added in v1.0.0 Source

Signature

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

neverFlat

Added in v1.0.0 Source

Signature

declare const neverFlat: Flatten<never>;

Mapping

map

Added in v1.0.0 Source

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

Added in v1.0.0 Source

Represents a FlattenResult where the input was already flat.

Signature

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

Flatten type

Added in v1.0.0 Source

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

Added in v1.0.0 Source

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

Signature

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

FlattenTypeLambda interface

Added in v1.0.0 Source

Signature

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

NeverFlat interface

Added in v1.0.0 Source

Represents a FlattenResult where the input cannot be flattened.

Signature

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

Other

Flatten

Added in v1.0.0 Source

Refinements

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

Signature

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

isFlatten

Added in v1.0.0 Source

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

Signature

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

isFlattened

Added in v1.0.0 Source

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

Signature

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

isNeverFlat

Added in v1.0.0 Source

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;

FlattenTypeId type

Added in v1.0.0 Source

Signature

type FlattenTypeId = typeof FlattenTypeId;