arrows pointing right and left

Ambidexter download

email Scott Turner


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

  1. 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.
  2. Right click on the above link and save it on your computer in the desired directory.
  3. Set permissions on the downloaded file to be executable.
  4. The 'ambidexter' command is now available (assuming you didn't change the file name).

Support open standards!  
Valid XHTML 1.0!