;
export function pluck(p: number, list: Array<{ [k: number]: T }>): T[];
export function pluck(p: P): (list: Array>) => T[];
export function pluck(p: number): (list: Array<{ [k: number]: T }>) => T[];
export function pluck(propertyName: string, mKv: Functor>): Functor;
export function pluck(propertyName: string): (mKv: Functor>) => Functor;
export function pluck(index: number, mKv: Functor<[T]>): Functor;
export function pluck(index: number): (mKv: Functor<[T]>) => Functor;
interface Applicative {}
interface Traversable {}
interface TypeRep {
"fantasy-land/of": (x: X) => Applicative
of: (x: X) => Applicative
}
// (Applicative f, Traversable t) => TypeRep f -> (a -> f b) -> t a -> f (t b)
export function traverse, FTB extends Applicative>>(
typeRep: TypeRep>, fn: (a: A) => FB, traversable: Traversable): FTB;
export function traverse(typeRep: TypeRep, fn: (t: A) => B[], list: readonly A[]): B[][];
export function traverse, FTB extends Applicative>>(
typeRep: TypeRep>, fn: (a: A) => FB): (traversable: Traversable) => FTB;
export function traverse(typeRep: TypeRep, fn: (t: A) => B[]): (list: readonly A[]) => B[][];
export function traverse, FTB extends Applicative>>(
typeRep: TypeRep>): (fn: (a: A) => FB) => (traversable: Traversable) => FTB;
export function traverse(typeRep: TypeRep): (fn: (t: A) => B[], list: readonly A[]) => B[][];
// (Applicative f, Traversable t) => TypeRep f -> t (f a) -> f (t a)
export function sequence>, FTB extends Applicative>>(
typeRep: TypeRep>, traversable: TFA): FTB;
export function sequence>, FTB extends Applicative>>(
typeRep: TypeRep>): (traversable: TFA) => FTB;