It must hold:
Module.linearComb (flatten v `asTypeOf` [a]) (basis a) == v
dimension a v == length (flatten v `asTypeOf` [a])Methods
basis :: a -> [v]basis of the module with respect to the scalar type, the result must be independent of argument, undefined should suffice.
flatten :: v -> [a]scale a vector by a scalar
dimension :: a -> v -> Intthe size of the basis, should also work for undefined argument, the result must be independent of argument, undefined should suffice.
Instances7C, …
C Integer IntegerDefined in numeric-prelude-0.4.4 · Algebra.ModuleBasisC Double DoubleDefined in numeric-prelude-0.4.4 · Algebra.ModuleBasisC Float FloatDefined in numeric-prelude-0.4.4 · Algebra.ModuleBasisC Int IntDefined in numeric-prelude-0.4.4 · Algebra.ModuleBasis(C a v0, C a v1) => C a (v0, v1)Defined in numeric-prelude-0.4.4 · Algebra.ModuleBasis(C a v0, C a v1, C a v2) => C a (v0, v1, v2)Defined in numeric-prelude-0.4.4 · Algebra.ModuleBasisC a => C (T a) (T a)Defined in numeric-prelude-0.4.4 · Algebra.ModuleBasis