// ------------ @author Daniel de Oliveira ----------------- export type Comparator = (_: A) => Predicate; export type ComparatorProducer = (_: Comparator) => Comparator; export type Predicate = (_: A) => boolean; export type PredicateProducer = (_: Predicate) => Predicate; export interface UntypedObjectCollection {[prop: string]: any|undefined} export interface ObjectCollection {[prop: string]: T} export interface ObjectMap {[prop: string]: T} // same as ObjectCollection export type ObjectSet = UntypedObjectCollection; export type Pair = [A, A]; export type Either = [T1, undefined]|[undefined, T2]; export type NestedArray = Array>; export type ArrayList = Array; export type ArraySet = Array; export type ObjectStruct = Object;