/** * A vector type constrained to a particular size enforced by the type system, and * associated typeclasses. * * @since 1.0.0 */ import * as Fun from 'fp-ts/Functor'; import * as FunI from 'fp-ts/FunctorWithIndex'; import * as Ap from 'fp-ts/Apply'; import * as Apl from 'fp-ts/Applicative'; import * as Bnd from 'fp-ts/Bounded'; import * as Chn from 'fp-ts/Chain'; import * as Fl from 'fp-ts/Foldable'; import * as FlI from 'fp-ts/FoldableWithIndex'; import * as Fld from 'fp-ts/Field'; import * as IO from 'fp-ts/IO'; import { HKT } from 'fp-ts/HKT'; import * as Mon from 'fp-ts/Monad'; import * as Mn from 'fp-ts/Monoid'; import * as O from 'fp-ts/Option'; import * as Tr from 'fp-ts/Traversable'; import * as TrI from 'fp-ts/TraversableWithIndex'; import * as Pt from 'fp-ts/Pointed'; import * as Rng from 'fp-ts/Ring'; import * as TC from './typeclasses'; import { Complex } from './complex'; /** * @since 1.0.0 * @category Model */ export interface Vec extends ReadonlyArray { _length: N; } /** * @since 1.0.0 * @category Constructors */ export declare const fromTuple: { (t: []): Vec<0, A>; (t: [A]): Vec<1, A>; (t: [A, A]): Vec<2, A>; (t: [A, A, A]): Vec<3, A>; (t: [A, A, A, A]): Vec<4, A>; (t: [A, A, A, A, A]): Vec<5, A>; (t: [A, A, A, A, A, A]): Vec<6, A>; (t: [A, A, A, A, A, A, A]): Vec<7, A>; (t: [A, A, A, A, A, A, A, A]): Vec<8, A>; (t: [A, A, A, A, A, A, A, A, A]): Vec<9, A>; (t: [A, A, A, A, A, A, A, A, A, A]): Vec<10, A>; }; /** * @since 1.0.0 * @category Constructors */ export declare const fromReadonlyArray: (n: N) => (as: ReadonlyArray) => O.Option>; /** * @since 1.0.0 * @category Constructors */ export declare const makeBy: (n: N, make: (i: number) => A) => Vec; /** * @since 1.0.0 * @category Constructors */ export declare const repeat: (n: N, a: A) => Vec; /** * @since 1.0.0 * @category Constructors */ export declare const randVec: (n: N, make: IO.IO) => IO.IO>; /** * @since 1.0.0 * @category Instances */ export declare const URI = "Vec"; /** * @since 1.0.0 * @category Instances */ export declare type URI = typeof URI; declare module 'fp-ts/HKT' { interface URItoKind2 { readonly [URI]: Vec; } } /** * @since 1.0.0 * @category Instances */ export declare const getAdditiveAbelianGroup: (R: Rng.Ring) => (n: N) => TC.AbelianGroup>; /** * @since 1.0.0 * @category Instances */ export declare const getBimodule: (R: Rng.Ring) => (n: N) => TC.Bimodule, R>; /** * @since 1.0.0 * @category Instance Operations */ export declare const map: (f: (a: A) => B) => (v: Vec) => Vec; /** * @since 1.0.0 * @category Instances */ export declare const Functor: Fun.Functor2; /** * @since 1.0.0 * @category Instance Operations */ export declare const mapWithIndex: (f: (i: number, a: A) => B) => (v: Vec) => Vec; /** * @since 1.0.0 * @category Instances */ export declare const FunctorWithIndex: FunI.FunctorWithIndex2; /** * @since 1.0.0 * @category Instance Operations */ export declare const of: (a: A) => Vec<1, A>; /** * @since 1.0.0 * @category Instances */ export declare const Pointed: Pt.Pointed2C; /** * @since 1.0.0 * @category Instance Operations */ export declare const ap: (fa: Vec) => (fab: Vec B>) => Vec; /** * @since 1.0.0 * @category Instances */ export declare const Apply: Ap.Apply2; /** * @since 1.0.0 * @category Combinators */ export declare const apFirst: (second: Vec) => (first: Vec) => Vec; /** * @since 1.0.0 * @category Combinators */ export declare const apSecond: (second: Vec) => (first: Vec) => Vec; /** * @since 1.0.0 * @category Instances */ export declare const Applicative: Apl.Applicative2C; /** * @since 1.0.0 * @category Instance Operations */ export declare const chain: (f: (a: A) => Vec<1, B>) => (ma: Vec) => Vec; /** * @since 1.0.0 * @category Instances */ export declare const Chain: Chn.Chain2C; /** * @since 1.0.0 * @category Combinators */ export declare const chainFirst: (f: (a: A) => Vec<1, B>) => (first: Vec<1, A>) => Vec<1, A>; /** * @since 1.0.0 * @category Instances */ export declare const Monad: Mon.Monad2C; /** * @since 1.0.0 * @category Instance Operations */ export declare const reduce: (b: B, f: (b: B, a: A) => B) => (fa: Vec) => B; /** * @since 1.0.0 * @category Instance Operations */ export declare const foldMap: (M: Mn.Monoid) => (f: (a: A) => M) => (fa: Vec) => M; /** * @since 1.0.0 * @category Instance Operations */ export declare const reduceRight: (b: A, f: (b: B, a: A) => A) => (fa: Vec) => A; /** * @since 1.0.0 * @category Instances */ export declare const Foldable: Fl.Foldable2; /** * @since 1.0.0 * @category Instance Operations */ export declare const reduceWithIndex: (b: B, f: (i: number, b: B, a: A) => B) => (fa: Vec) => B; /** * @since 1.0.0 * @category Instance Operations */ export declare const foldMapWithIndex: (M: Mn.Monoid) => (f: (i: number, a: A) => M) => (fa: Vec) => M; /** * @since 1.0.0 * @category Instance Operations */ export declare const reduceRightWithIndex: (b: A, f: (i: number, b: B, a: A) => A) => (fa: Vec) => A; /** * @since 1.0.0 * @category Instances */ export declare const FoldableWithIndex: FlI.FoldableWithIndex2; /** * @since 1.0.0 * @category Instance Operations */ export declare const traverse: Tr.PipeableTraverse2; /** * @since 1.0.0 * @category Instance Operations */ export declare const sequence: (F: Apl.Applicative) => (fa: Vec>) => HKT>; /** * @since 1.0.0 * @category Instances */ export declare const Traversable: Tr.Traversable2; /** * @since 1.0.0 * @category Instance Operations */ export declare const traverseWithIndex: TrI.PipeableTraverseWithIndex2; /** * @since 1.0.0 * @category Instances */ export declare const TraversableWithIndex: TrI.TraversableWithIndex2; /** * @since 1.0.0 * @category Destructors */ export declare const toTuple: { (t: Vec<0, A>): []; (t: Vec<1, A>): [A]; (t: Vec<2, A>): [A, A]; (t: Vec<3, A>): [A, A, A]; (t: Vec<4, A>): [A, A, A, A]; (t: Vec<5, A>): [A, A, A, A, A]; (t: Vec<6, A>): [A, A, A, A, A, A]; (t: Vec<7, A>): [A, A, A, A, A, A, A]; (t: Vec<8, A>): [A, A, A, A, A, A, A, A]; (t: Vec<9, A>): [A, A, A, A, A, A, A, A, A]; (t: Vec<10, A>): [A, A, A, A, A, A, A, A, A, A]; }; /** * @since 1.0.0 * @category Destructors */ export declare const size: (v: Vec) => N; /** * @since 1.0.0 * @category Destructors */ export declare const lpNorm: (p: number) => (R: Rng.Ring, abs: (x: A) => A, pow: (x: A, n: number) => A) => (x: Vec) => A; /** * @since 1.0.0 * @category Destructors */ export declare const l1Norm: (R: Rng.Ring) => (x: Vec) => A; /** * @since 1.0.0 * @category Destructors */ export declare const l2Norm: (R: Rng.Ring, abs: (x: A) => A, pow: (x: A, n: number) => A) => (x: Vec) => A; /** * Get the maximum value of a vector * * @since 1.0.0 * @category Destructors */ export declare const lInfNorm: (B: Bnd.Bounded, abs: (a: A) => A) => (x: Vec) => A; /** * @since 1.1.0 * @category Vector Operations */ export declare const switchIndices: (i: number, j: number) => (v: Vec) => O.Option>; /** * @since 1.0.0 * @category Vector Operations */ export declare const lift2: (f: (x: A, y: A) => B) => (x: Vec, y: Vec) => Vec; /** * @since 1.0.0 * @category Vector Operations */ export declare const mapIndex: (n: number) => (f: (a: A) => A) => (fa: Vec) => O.Option>; /** * @since 1.0.0 * @category Vector Operations */ export declare const updateAt: (n: number) => (a: A) => (fa: Vec) => O.Option>; /** * @since 1.0.0 * @category Vector Operations */ export declare const zipVectors: (v1: Vec, v2: Vec) => Vec; /** * @since 1.0.0 * @category Vector Operations */ export declare const reverse: (v1: Vec) => Vec; /** * @since 1.0.0 * @category Vector Operations */ export declare const get: (i: number) => (fa: Vec) => O.Option; /** * @since 1.0.0 * @category Vector Operations */ export declare const crossProduct: (R: Rng.Ring) => (x: Vec<3, A>, y: Vec<3, A>) => Vec<3, A>; /** * @since 1.0.0 * @category Vector Operations */ export declare const innerProduct: (R: Rng.Ring, conj: (r: A) => A) => (x: Vec, y: Vec) => A; /** * @since 1.0.0 * @category Vector Operations */ export declare const projection: (F: Fld.Field, conj: (r: R) => R) => (u: Vec, v: Vec) => Vec; /** * Add an element at the beginning of a vector. Due to the limitations of the typesystem, * the length parameter must be passed explicitly, and will be the new length of the * returned matrix. * * @since 1.1.0 * @category Vector Operations */ export declare const prepend: (head: A) =>

(v: Vec) => Vec; /** * Add an element at the end of a vector. Due to the limitations of the typesystem, the * length parameter must be passed explicitly, and will be the new length of the returned matrix. * * @since 1.1.0 * @category Vector Operations */ export declare const append: (head: A) =>

(v: Vec) => Vec; /** * @since 1.0.0 * @category Do notation */ export declare const bindTo: (name: N) => (fa: Vec) => Vec; /** * @since 1.0.0 * @category Do notation */ export declare const bind: (name: Exclude, f: (a: A) => Vec<1, B>) => (ma: Vec<1, A>) => Vec<1, { readonly [K in N | keyof A]: K extends keyof A ? A[K] : B; }>; /** * @since 1.0.0 * @category Do notation */ export declare const apS: (name: Exclude, fb: Vec) => (fa: Vec) => Vec; //# sourceMappingURL=Vector.d.ts.map