Implementations of ATS


  • ATS/Proto is the first implementation of ATS. In this implementation, the standard boxed data representation is used to support parametric polymorphism. At this moment, ATS/Proto is no longer actively maintained and its main purpose is to serve as an example for future reference.

  • ATS/Geizella is a previously released implementation of ATS (written in Objective Caml and C). In this implementation, the native unboxed data representation (as is in C) is adopted, and this makes ATS/Geizella particularly well suited for direct interaction with C. As for parametric polymorphism, it is supported in ATS/Geizella through the use of templates.

  • ATS/Anairiats is the current released implementation of ATS. ATS/Anairiats is almost entirely written in ATS itself, consisting of more than 80,000 lines of source code that can be viewed here. When compared to ATS/Geizella, ATS/Anairiats is significantly more efficient, and in general it issues more informative messages for identifying program errors.


  • This page is maintained by Hongwei Xi. As always, your comments are welcome.