UNPKG

telegram-mtproto

Version:
38 lines (28 loc) 809 B
//@flow export interface λType<Name> { typeName: Name } export interface λMap<Name, Value> extends λType<Name> { map<Valueʹ>(f: (x: Value) => Valueʹ): λMap<Name, Valueʹ>, } export interface λChain<Name, Value> extends λType<Name> { chain<Nameʹ, Valueʹ>( f: (x: Value) => λChain<Nameʹ, Valueʹ> ): λChain<Nameʹ, Valueʹ>, } export interfaceOfᐳ<Name> { of(v: *): λType<Name>, } export interfaceMapᐳ<Name> extendsOfᐳ<Name> { of(v: *): λMap<Name, *>, } export interfaceChainᐳ<Name> extendsOfᐳ<Name> { of(v: *): λChain<Name, *>, } export interfaceEmptyᐳ<Name> { empty(): λType<Name>, } export interfaceChainRecᐳ<Name> extendsChainᐳ<Name> { chainRec(f: *, i: *): λType<Name>, } // export interface ᐸEmptyᐳ<Type>