Skip to content
This repository was archived by the owner on Oct 18, 2021. It is now read-only.

amuletml/amulet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Oct 17, 2021
021460a · Oct 17, 2021
Oct 29, 2018
Aug 30, 2021
Feb 27, 2021
Jan 26, 2020
Apr 5, 2020
Jul 13, 2021
Jul 13, 2021
Aug 30, 2021
Jan 31, 2020
Feb 22, 2021
Apr 2, 2021
May 11, 2018
Apr 27, 2020
Aug 23, 2018
Nov 11, 2019
Jun 8, 2020
Jan 2, 2020
Oct 17, 2021
Sep 9, 2017
Aug 30, 2021
Aug 30, 2021
Aug 30, 2021

Repository files navigation

Amulet is no longer under development. If you're interested in other languages which compile to Lua, do check out this list.

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

Installation

Installation instructions

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.