This artifact includes the implementation of NumLin, a functional programming language designed to express the APIs of low-level linear algebra libraries (such as BLAS/LAPACK) safely and explicitly.

It includes:

  • src: the implementation of the language: lexer/parser, AST, type-checker, implementation of “primitives” and transpiler to OCaml.
  • test: tests for the transpiler, type-checker and each of the examples presented in the paper.
  • examples: NumLin code for all examples, Python and C code (with bindings to make them accessible from OCaml) for a subset of examples.
  • bin: three executables - benchmark, transpile and repl.
  • write-up: files for this paper and the Master’s thesis this paper extended. The VM does not include the relevant software to build this directory.