Tachy is a Scheme-like (R5RS is the template, but not the goal) language that is being developed in C# for the .NET framework and is made available as Open Source (BSD License). The current implementation is an interpreter, and a compiler is planned. The primary focus for Tachy is for programming language learning & experimentation, and an attempt has been made to keep the code as small(currently under 1000 lines) and straightforward as possible.

  • The general philosophy is to stay as close as reasonably possible to Scheme, but transperancy and integration with the .NET runtime always trumps R5RS. For instance, eq? and eqv? are available, but they call the CLR Object.Equals() and Object.Is Equivalent() methods directly rather than follow strict adherence to the Scheme specification.
  • Special forms implemented: define if, lambda, set!, quote, and, or, let, letrec, cond
  • Uses unwrapped .NET Common Language Runtime (CLR) types whenever possible (a string is a System.String, an integer is a System.Int32, etc) . As a result there are only three custom data types for expressed values: Symbol, Pair and Closure.
  • Since Tachy does not implement its own type system and raw CLR objects are valid expressed values, there is no need for a Foreign Function Interface. If a CLR class is available in the current Assembly, it can be used.
  • Tachy can create new obects instances of available CLR classes, call object methods (and static methods on classes), and get and set the values of object fields and properties. Defining new classes is currently unavailable, but is planned.
  • There is no language support for continuations

08.12.05:

  • Added Peter de Laat\’s changes, including his excellent Tachy debugger and Visual Studio.net add-in.

04-20-05:

  • Separated the Tachy interpreter into a DLL to make it more easy to embed
  • Visual Studio.Net 2003 project now included
  • Let, letrec, and, or, cond special forms now supported
  • Added preliminary macro system (for example of use see implementation of above special forms in init.ss)
  • Define special form now supports creation of functions without explicit lambda (a form used extensively in SICP)
  • Many more standard R5RS library functions now available

Click here to download the latest version of Tachy (includes full source).