Overview

Type defunctionalization (as describe in Lightweight higher-kinded polymorphism)


Table of contents


HKT (interface)

Signature

export interface HKT<URI, A> {
  readonly _URI: URI
  readonly _A: A
}

HKT2 (interface)

* -> * -> * constructors

Signature

export interface HKT2<URI, L, A> extends HKT<URI, A> {
  readonly _L: L
}

HKT3 (interface)

* -> * -> * -> * constructors

Signature

export interface HKT3<URI, U, L, A> extends HKT2<URI, L, A> {
  readonly _U: U
}

HKT4 (interface)

* -> * -> * -> * -> * constructors

Signature

export interface HKT4<URI, X, U, L, A> extends HKT3<URI, U, L, A> {
  readonly _X: X
}

URI2HKT (interface)

* -> * constructors

Signature

export interface URI2HKT<A> {}

URI2HKT2 (interface)

* -> * -> * constructors

Signature

export interface URI2HKT2<L, A> {}

URI2HKT3 (interface)

* -> * -> * -> * constructors

Signature

export interface URI2HKT3<U, L, A> {}

URI2HKT4 (interface)

* -> * -> * -> * -> * constructors

Signature

export interface URI2HKT4<X, U, L, A> {}

Type (type alias)

* -> * constructors

Signature

export type Type<URI extends URIS, A> = {} & URI2HKT<A>[URI]

Type2 (type alias)

* -> * -> * constructors

Signature

export type Type2<URI extends URIS2, L, A> = {} & URI2HKT2<L, A>[URI]

Type3 (type alias)

* -> * -> * -> * constructors

Signature

export type Type3<URI extends URIS3, U, L, A> = {} & URI2HKT3<U, L, A>[URI]

Type4 (type alias)

* -> * -> * -> * -> * constructors

Signature

export type Type4<URI extends URIS4, X, U, L, A> = {} & URI2HKT4<X, U, L, A>[URI]

URIS (type alias)

* -> * constructors

Signature

export type URIS = keyof URI2HKT<any>

URIS2 (type alias)

* -> * -> * constructors

Signature

export type URIS2 = keyof URI2HKT2<any, any>

URIS3 (type alias)

* -> * -> * -> * constructors

Signature

export type URIS3 = keyof URI2HKT3<any, any, any>

URIS4 (type alias)

* -> * -> * -> * -> * constructors

Signature

export type URIS4 = keyof URI2HKT4<any, any, any, any>