amuletAn ML-like functional programming language
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.
Installation
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:
${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.