• MLKit logoSMLtoJs logo MLKit is a compiler for Standard ML with native backends and a JavaScript backend, SMLtoJs. SMLtoJs brings Standard ML’s static typing, higher-order functions, pattern matching, and modules to client-side web programming. The SMLtoJs IDE lets you write and run Standard ML directly in your browser.

  • ReML logo ReML extends Standard ML with effect and memory region annotations. Built on MLKit, it combines inference with explicit control over where values live and which effects code may perform, allowing the compiler to check those constraints.

  • Futhark logo Futhark is a functional language for efficient data-parallel programming. My contributions involve language design, formal development and techniques for zero-cost abstractions, and data-parallel techniques and libraries, including the monoidal library. The book Parallel Programming in Futhark introduces the language and its approach to parallel programming.

  • Dq — the DIKU Quantum Simulator provides tools for specifying, drawing, and simulating quantum circuits. It explores functional simulation techniques in Standard ML and parallel execution through Futhark, including gate fusion.

  • Caddie is an experimental implementation of combinatory automatic differentiation in Standard ML. It represents derivatives as compositions of linear maps and supports both forward-mode and reverse-mode differentiation. The approach is described in Combinatory Adjoints and Differentiation (PDF).

  • APLtoTail compiles a subset of APL into TAIL, a typed array intermediate language. The project includes an interpreter and a C backend. Its foundations are described in Compiling a Subset of APL Into a Typed Intermediate Language (PDF). APLtoTail has also been used to compile APL to Futhark for efficient GPU execution, as described in APL on GPUs: A TAIL from the Past, Scribbled in Futhark (PDF).

Retired projects

  • SMLserver is a Web server plugin for the Apache Web server. SMLserver makes it possible to write dynamic Web applications using your favorite programming language without sacrificing efficiency and scalability of your Web service. SMLserver includes the possibility of accessing a variety of different relational database management systems (RDBMSs), such as Oracle and Postgresql. This project is retired and has been superseded by sml-server, a library for building HTTP servers in Standard ML.