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.