@hackage numhask-array0.5.0.0
n-dimensional arrays
Deprecated
Tested Compilers
Dependencies (9)
- adjunctions >=4.0 && <5
- base >=4.11 && <5
- deepseq >=1.4.2.0 && <2
- distributive >=0.4 && <0.7
- hmatrix
- numhask >=0.3.1 && <0.4 Show all…
Dependents (6)
@hackage/online, @hackage/mealy, @hackage/chart-svg, @hackage/ephemeral, @hackage/acme-everything, @hackage/chart-svg-various
numhask-array
Arrays are higher-kinded numbers that can be indexed into with an Int list. Higher-kinded numbers are things with a non-primitive type that we wish to use the usual numerical operators on (+,-,*,/,abs).
This is an experimental library that:
- allows shape to be specified at both the type and value level.
- provides operators at value and type level to help manipulate shapes.
- Provides fixed and dynamic arrays with the same API.
Performance experiments are located in numhask-bench
Usefulness of the array language that results from this treatment is yet to be explored.
API of an array language
https://en.wikipedia.org/wiki/APL_(programming_language)
See http://hiperfit.dk/pdf/array14_final.pdf for context and a sketch of an intermediate typed array language effort.
The operators that result from using the Representable type - separation of size tracking at compile level, from computational at runtime - ends up looking like APL.
Matrix multiplication in APL is +.x and in numhask-array is dot sum (*). There is a slight increase in abstraction by explicitly exposing the fold in the algorithm, but the expressions are both very neat and abstracted away from the specialisation of multiplying matrices.
References
https://blog.plover.com/prog/apl-matrix-product.html