|
|
This is release 0.5 of Ambidexter,
an interpreter for the language.
It is implemented in Haskell and can be built with GHC or run with Hugs,
though GHC is recommended.
Code contributions from other developers are welcome. I would consider making
source control public via SourceForge or Darcs.
New in release 0.5 are
- The sequence of interaction with the environment must be orderly.
Control operations which violate the sequence are caught as runtime errors.
- The type of
abort is modified so that it does not take over control.
- The
--call-by-push-value command line option is no longer supported.
New in release 0.4:
- Reverted the sequencing of I/O actions in by-name mode to
pass along values non-strictly. "Strict monad" was briefly the default in version 0.3.
Added an
_evaluate built-in function which is like _be
except that it evaluates the argument term.
- Now chaining of definitions using lambda is allowed.
For example,
1 \one -> 2 \two -> one two plus
New in release 0.3:
- The sequencing of I/O actions in by-name mode is changed to
pass along values strictly. So the argument of the
_be function
must be ¬T where T is the type of the
result value.
This change can be suppressed by using the --no-strict-monad command line option.
- Several of the built-in functions have changed types and behavior, while
others have been removed.
For example
run , which performed the same function
as Haskell's unsafePerformIO , was among the functions
removed or modified to guarantee soundness of the I/O model.
exit and prim_exit were
replaced by an exit with the simpler type IOV False .
- Updated to work best with GHC 6.4, or Hugs 98 March 2005.
New in release 0.2:
- Type error messages contain explanations.
- By-value and by-name function types
are synonyms for more primitive types, providing compatibility between the two modes.
- By-value and by-name I/O types
are synonyms for more primitive types, providing compatibility between the two modes.
- A
--call-by-push-value option restricts the base language
in a way inspired by Paul B. Levy's "Call By Push Value" calculus.
- Logical not (
¬ or ~ ) is a first class type constructor.
Build instructions are included as a file in the
source distribution. An MIT license makes the source free.
The binaries are ready to execute on their respective operating systems.
The above executables are bare files. Installation depends on your OS, and generally consists of
- Determine a directory on your computer where the executable file
can be located so that it will treated as a command in your terminal
or DOS prompt.
- Right click on the above link and save it on your computer
in the desired directory.
- Set permissions on the downloaded file to be executable.
- The 'ambidexter' command is
now available (assuming you didn't change the file name).
|
|
|