
The Morrow compiler is not nearly complete: it does not generate code yet and the type checker is only partially implemented. Read the introduction to read more about using the Morrow interpreter.
The latest stable version of Morrow can be downloaded with darcs:
> darcs get --partial http://www.equational.org/repos/morrow/main
The latest development version that supports existential types can be downloaded as:
> darcs get --partial http://www.equational.org/repos/morrow/branches/morrow-ex
After downloading, use configure and make to build Morrow. You need to have a recent Haskell compiler (GHC, NHC, or Hugs) and the UUAG attribute grammar system. There is precompiled version of UUAG for windows, just put in it somewhere in your path.
Once downloaded, you can build the system using:
> configure > make interactive
Use configure --help and make help to get more information about the build process. If you experience download or build problems, or if you would like to have a binary version, you can send an email to the designer.
Currently, the Morrow interpreter compiles and executes expression using OCaml.
You need to have ocamlc in your path if you want to run expressions (otherwise, only the inferred types are shown).
ocamlc can be found, it is used to compile and execute expressions.some quantifier can be used to explicitly open existentials at let bindings. For example.
type Key a = { val :: a, key :: a -> Int }
absInt :: exists a. Key a
absInt = { val = 1, key i = i }
one1 = (\x -> x.key x.val) (head [absInt])
one2 = let x :: some a. Key a
x = absInt
in x.key x.val
"Jul 13 2006"