Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/amuletml/amulet
An ML-like functional programming language
https://github.com/amuletml/amulet
compiler functional-language haskell ml
Last synced: 25 days ago
JSON representation
An ML-like functional programming language
- Host: GitHub
- URL: https://github.com/amuletml/amulet
- Owner: amuletml
- License: bsd-3-clause
- Archived: true
- Created: 2017-12-20T14:04:11.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2021-10-17T20:03:22.000Z (about 3 years ago)
- Last Synced: 2024-05-18T23:16:33.497Z (7 months ago)
- Topics: compiler, functional-language, haskell, ml
- Language: Haskell
- Homepage: https://amulet.works/
- Size: 3.93 MB
- Stars: 322
- Watchers: 17
- Forks: 14
- Open Issues: 31
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- programming-languages - Amulet - ML-like functional programming language. (Functional)
README
Amulet is no longer under development. If you're interested in other languages
which compile to Lua, do check out
[this list](https://github.com/hengestone/lua-languages).# Amulet
Amulet is a simple functional programming language in the ML tradition,
with support for higher-rank parametric polymorphic types and
row-polymorphic records, pattern matching with algebraic data types, and
tail recursion elimination.[![Build Status](https://shamiko.amulet.works/job/amulet/job/master/badge/icon)](https://shamiko.amulet.works/job/amulet/job/master/)
# Installation
[Installation
instructions](https://amulet.works/tutorials/00-installing.html)For your convenience, we provide pre-built tarballs for x86_64 Linux
that are compiled every night from the `master` branch (as part of the
nightly build job, linked above). Install them with the magic install
script:```
curl https://amulet.works/install.sh | env CHANNEL=nightly sh -
```# Building from Source
Make sure you have a functional Haskell toolchain including Stack. Since
Amulet has a lot of object files (around 125 for the `amc` executable,
not counting all of the Haskell dependencies that are shipped as `.a`
static libraries), we use the LLVM `lld` linker in the Cabal file.If you do not wish to use `lld`, remove all the `ghc-options:` stanzas
from the `amuletml.cabal` file; This sed command should do the trick,
too.```
sed -re 's;-optl-fuse-ld=lld;;g' -i amuletml.cabal
```Amulet ships with its own set of libraries. Make sure they are
installed. `amc` will look for its libraries in one of the following
directories:```bash
${AMC_LIBRARY_PATH}
$(dirname $(which amc))/lib
$(dirname $(which amc))/../lib
```The script `tools/quickinstall.sh` will take care of building and
installing the libraries, using Stack.