numhask-array: n-dimensional arrays

[ bsd3, library, project ] [ Propose Tags ]

n-dimensional arrays founded on numhask.

[Skip to Readme]
Versions [faq] 0.0.1, 0.0.2,,,,,, 0.3,,,, 0.5.1, 0.6.0
Dependencies adjunctions (>=4.0 && <5), base (>=4.11 && <5), deepseq (>= && <2), distributive (>=0.4 && <0.7), hmatrix, numhask (>=0.3.1 && <0.6), numhask-prelude (>=0.3 && <0.6), protolude (>=0.2 && <0.4), vector (>=0.10 && <0.13) [details]
License BSD-3-Clause
Copyright Tony Day
Author Tony Day
Category project
Home page
Bug tracker
Source repo head: git clone
Uploaded by tonyday567 at 2020-05-20T22:21:39Z
Distributions NixOS:0.5.1
Downloads 4023 total (299 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2020-05-20 [all 1 reports]


[Index] [Quick Jump]


Maintainer's Corner

For package maintainers and hackage trustees

Readme for numhask-array-0.6.0

[back to package description]


Build Status Hackage

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

See 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.