Source Code

Prototype Implementation

The prototype is written in Haskell using the Glasgow Haskell Compiler (GHC).

To compile the prototype use something like

ghc -O --make Main.hs -o raml

The code is tested with GHC 6.10 and GHC 7.4. See usage for information on the command line usage.

Alternatively you can use RAML interactively with ghci as follows.

% ghci
GHCi, version 6.10.4: http://www.haskell.org/ghc/ :? for help
Prelude> :l Main.hs
Prelude> :module +RAMLTypes
*Main> analyseFile "examples/sorting.raml" heapSpace 2

The function analyseFile is documented in detail in the file Main.hs.

The prototype is using the linear programming solver Clp by default. RAML is assuming that the executable clp is in the path.

You can also use the LP solvers lp_solve (with the command line option --lp_solve) and CPLEX (with the option --cplex). Our experiments indicate that Cplex is faster than Clp and that Clp is much faster than lp_solve on our constraint systems.

Git Repository

The current version of Resource Aware ML can be obtained from the RAML git repository at bitbucket. Just run the following command.

git clone https://bitbucket.org/hoffjan/raml.git

Haskell Cabal

Johannes Waldmann created a a RAML Cabal package. This makes the installation of RAML very easy. Just run the following commands.

cabal configure && cabal build

To test the installation run the following.

./dist/build/raml/raml analyse eval-steps 4 examples/matrix.raml

Emacs Mode

There is a RAML Emacs Mode for conveniently analyzing and evaluating RAML programs in Emacs.