MyNixOS website logo
Description

Instantiate the classes from the vector-space package with types from linear.

The linear package offers efficient vector types — where vector means element of a free vector space, i.e. fixed-length arrays of numbers. The entire interface of that library is based on this concept of free vectors with a canonical coordinate representation.

While this is practically speaking often useful, it is also

  • Questionable in terms of conceptual elegance. The idea of a vector has originally not much to do with number-arrays; in physics a vector is just a quantity with magnitude and direction. Only by fixing a basis can a coordinate representation arise from that.

  • Not as safe as we'd like. The typical linear-algebra languages like Matlab or Fortran are notorious for hard-to spot mistakes that often arise from the total reliance on coordinate representations (every vector/linear map is just a matrix of number). linear already avoids most of these problems because it can at least check dimensions at compile-time and usually doesn't need any indices, but some trouble still remains. E.g., two different 3-dimensional spaces are indistinguishable by the type system (unless you wrap one of them in a newtype, however that also needs to be parameterised on the coordinate type to work with the rest of the library).

The vector-space library has arguably a better (albeit less complete) interface. To gain access to that interface with the more efficient types from linear, we here provide the necessary orphan instances.

Metadata

Version

0.1.5.2

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows