Dex (named for "index") is a research language for array processing in the Haskell/ML family. The goal of the project is to explore:
- Type systems for array programming
- Mathematical program transformations like differentiation and integration
- User-directed compilation to parallel hardware
- Interactive and incremental numerical programming and visualization
To learn more, check out our workshop paper or these example programs:
- Tutorial
- Dex prelude
- Mandelbrot set
- Estimating pi
- Sierpinsky triangle
- Basis function regression
- Brownian bridge
- MNIST nearest-neighbor classifier
Please note that Dex is an experimental research project at an early stage of development. We welcome contributions. There's plenty of work to do!
- Install stack
- Install LLVM 9, e.g.
apt-get install llvm-9-dev
on Ubuntu/Debian. On macOS, the best approach seems to be to build LLVM from source, as described here.
- Build Dex:
make
- Run tests:
make tests
- Set up alias (e.g. in .bashrc)
alias dex="stack exec dex --"
- Traditional REPL:
dex repl
- Execute script:
dex script examples/tutorial.dx
- Notebook interface:
dex web examples/tutorial.dx
BSD-3
This is an early-stage research project, not an official Google product.