https://github.com/adrhill/dex-lang
Research language for array processing in the Haskell/ML family
Science Score: 10.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
○codemeta.json file
-
○.zenodo.json file
-
○DOI references
-
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.0%) to scientific vocabulary
Last synced: 10 months ago
·
JSON representation
Repository
Research language for array processing in the Haskell/ML family
Basic Info
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Fork of google-research/dex-lang
Created about 4 years ago
· Last pushed almost 4 years ago
https://github.com/adrhill/dex-lang/blob/main/
# Dex [](https://github.com/google-research/dex-lang/actions?query=workflow%3ATests)
Dex (named for "index") is a research language for typed, functional array
processing. 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
[paper](https://arxiv.org/abs/2104.05372),
our [tutorial](https://google-research.github.io/dex-lang/examples/tutorial.html)
or these example programs:
* [Dex prelude](https://google-research.github.io/dex-lang/prelude.html)
* [Mandelbrot set](https://google-research.github.io/dex-lang/examples/mandelbrot.html)
* [Ray tracer](https://google-research.github.io/dex-lang/examples/raytrace.html)
* [Estimating pi](https://google-research.github.io/dex-lang/examples/pi.html)
* [Hamiltonian Monte Carlo](https://google-research.github.io/dex-lang/examples/mcmc.html)
* [ODE integrator](https://google-research.github.io/dex-lang/examples/ode-integrator.html)
* [Sierpinski triangle](https://google-research.github.io/dex-lang/examples/sierpinski.html)
* [Basis function regression](https://google-research.github.io/dex-lang/examples/regression.html)
* [Brownian bridge](https://google-research.github.io/dex-lang/examples/brownian_motion.html)
**Dex is an experimental research project at an early stage of
development. Expect monstrous bugs and razor-sharp edges!**
**Contributions welcome!** See our issue tracker for [good first issues](https://github.com/google-research/dex-lang/labels/good%20first%20issue), or browse by [thematic labels](https://github.com/google-research/dex-lang/labels).
## Dependencies
* Install [stack](https://www.haskellstack.org)
* Install LLVM 12
* Ubuntu/Debian: `apt-get install llvm-12-dev`
* macOS: `brew install llvm@12`
* Make sure `llvm@12` is on your `PATH` before building. Example: `export PATH="$(brew --prefix llvm@12)/bin:$PATH"`
* Install clang 12 (may be installed together with llvm)
* Ubuntu/Debian: `apt-get install clang-12`
* macOS: installs with llvm
* Install libpng (often included by default in *nix platforms)
* Ubuntu/Debian: `apt-get install libpng-dev`
* macOS: `brew install libpng`
## Building
* Build Dex in development mode: `make`
* Run tests in development mode: `make tests`
* Install a release version of Dex: `make install`
The default installation directory is `$HOME/.local/bin`, so make sure to add
that directory to `$PATH` after installing Dex. To install Dex somewhere else,
set the `PREFIX` environment variable before running `make install`. For
example, `PREFIX=$HOME make install` installs `dex` in `$HOME/bin`.
It is convenient to set up a `dex` alias (e.g. in `.bashrc`) for running Dex in
development mode:
```console
# Linux:
alias dex="stack exec dex -- --lib-path lib"
# macOS:
alias dex="stack exec --stack-yaml=stack-macos.yaml dex -- --lib-path lib"
```
### Haskell Language Server
In order to use [HLS](https://github.com/haskell/haskell-language-server) with
the Haskell code in this project:
- Install [ghcup](https://www.haskell.org/ghcup/)
- Run `ghcup install hls`
- Create a file in the root `dex` directory called `hie.yaml` with the following
contents:
```yaml
cradle:
stack:
stackYaml: "./stack-macos.yaml" # Or stack.yaml if not on MacOS
```
Unfortunately one cannot dynamically select the `stack.yaml` file to use based
on the environment, and so one has to create an appropriate `hie.yaml` file
manually. This will be ignored by git.
This should work out of the box with Emacs' `lsp-haskell` package.
### Building with Nix
[Nix](https://nixos.org/) is a functional package manager and build system.
To build with vanilla Nix:
```bash
$ nix-build
```
To build with flakes-enabled Nix:
```bash
$ nix build .#dex
```
The resulting `dex` binary should be in `result/bin/dex`.
For development purposes, you can use a Nix environment with
```bash
$ nix-shell
$ nix develop # With flakes
```
and use `make` to use Stack to build Dex.
## Running
* Traditional REPL: `dex repl`
* Execute script: `dex script examples/pi.dx`
* Live-updated notebook display `dex web examples/pi.dx` (html) or `dex watch
examples/pi.dx` (terminal).
## License
BSD-3
This is an early-stage research project, not an official Google product.
Owner
- Name: Adrian Hill
- Login: adrhill
- Kind: user
- Location: Berlin
- Company: TU Berlin
- Twitter: adr_hill
- Repositories: 11
- Profile: https://github.com/adrhill
PhD student @ TU Berlin