Table of contents |
2 ARS++ explained by its name 3 See also |
History
ARS++ has been developed in 2002 for the book Undiluted Programming (a description of the book is available on page [1]) to demonstrate ARS based programming in a real world context. ARS++ is used in the book to implement an A++ interpreter and an XML Database System. Even the implementation of ARS++ in C was used to demonstrate ARS based programming.
Principally the programming language Scheme would have been perfectly alright to be used for these demonstration programs if Scheme would include primitives supporting network programming, database programming plus a few others required in this context.
The definition of the programming language Scheme does not include those primitives however, leaving this issue up to the implementors of the language. The consequence is that there exist many Scheme implementations, almost none of them covering all areas essential for real application programs.
This is the historical background that gave birth to the development of ARS++.
A few weeks ago the author of the referenced book discovered a Scheme implementation that would have been very well suited to serve as a language for developing the case studies for 'Undiluted Programming'. This Scheme implementation is called Gauche and is available for download in the internet on the following page [1].
ARS++ explained by its name
The name ARS++, being an acronym for ARS + Scheme + Extensions, indicates that ARS++ has a lot to do with Scheme but that it is not equivalent to Scheme.
From a practical point of view a Scheme implementation that
includes support for regular expressions, databases, sockets and
also provides an interface to the operating system can be
called an ARS++ language (ignoring the difference in the
nucleus which practically is only noticed by the programmer
when using the special form define).
The structure of A++ however is different from the structure of Scheme, which can be verified by comparing the definition of Scheme in R5RS with the definition of A++ on page [1] and the following.
Primitive functions are those, that are not and cannot be defined as lambda abstractions because they are representing a functionality that can only be provided by the underlying operating system or the hardware.
See also