Arc Programming Language
Arc is a minimalist dialect of the Lisp programming language developed by Paul Graham and Robert Tappan Morris. Released as free and open-source software under the Artistic License 2.0, Arc was designed to provide a highly expressive, concise and flexible environment for exploratory programming. It is implemented in the Racket language and has been used in various internal projects at Y Combinator, most notably the software running the Hacker News platform.
Historical Development
Work on Arc began in 2001, when Paul Graham announced his intention to create a new Lisp dialect focused on simplicity and programmer productivity. Over the following years, Graham published several essays outlining proposed features and design philosophy. A public version of Arc was first released in January 2008 as a Racket-based distribution accompanied by documentation, example programs and an online discussion forum.
Arc’s early adoption was driven partly by its use at Y Combinator, where some internal tools and the Hacker News web forum were written in the language. Community interest led to multiple ports and extensions despite the limited number of official updates to the core codebase.
Language Philosophy and Design Motives
Arc was conceived around a few central principles. According to Graham, a successful language should be hackable, easy to modify and equipped with an accessible library system. Terseness is emphasised throughout the language design; Arc programs tend to be significantly shorter than equivalent programs in many other languages. Graham argued that a small set of core rules or “axioms” is preferable to a large feature set aimed at enterprise-level development.
A key part of Arc’s philosophy is its position on object-oriented programming (OO). Graham contends that OO concepts primarily reflect good design practice rather than essential language mechanisms, and he therefore regards many OO language features as unnecessary or misguided. Arc instead focuses on functions, macros and flexible data structures.
Arc also contributes to ongoing discussions about syntax within Lisp dialects. While Lisp is traditionally reliant on s-expressions, Graham supports the introduction of additional syntax in cases where s-expressions would become cumbersome. Issues of program efficiency, he believes, are better addressed through good profiling tools and optimisation strategies rather than elaborate compiler features.
Reception
Arc’s release generated a range of responses within the Lisp and Scheme communities. Some critics argued that Arc was essentially an extension of Lisp or Scheme, lacking enough differentiation to qualify as a new language. Others appreciated its purity, simplicity and focus on core language constructs, interpreting Arc as a refinement of Lisp’s minimalistic spirit.
Shortly after its introduction, Arc was successfully ported to JavaScript and gained support through Schemescript, an Eclipse-based integrated development environment, illustrating the versatility of its core concepts.
Example Programmes
Arc’s terseness is often highlighted through short examples. A typical “Hello World” program is written simply as:
prn “Hello World”
Graham also demonstrated Arc’s suitability for rapid web application development through compact code examples such as a small form-handling routine in which a user enters a value at a given URL and receives a generated response page.
Versions and Implementations
The official version of Arc, released in January 2008, is distributed as a tar archive containing the Racket source code and basic documentation. The accompanying user forum, running the same software used by Hacker News, is itself written in Arc.
Due to slow development of the official branch, several community-driven variants have emerged:
- Anarki, an open repository allowing community contributions, together with a collaborative wiki.
- Rainbow, an implementation of Arc written in Java.
- Arcadia, an implementation in C.
- Additional re-implementations and experimental ports aiming to extend Arc’s usability and performance.
These versions reflect the decentralised, collaborative ethos of the Arc community.
Influence and Context within Lisp Dialects
Arc represents one point in the evolving landscape of Lisp dialects, offering an experimental approach to language design by stripping the Lisp model to essentials. Its focus on concise syntax, flexible structures and minimalist philosophy aligns with broader trends in functional and exploratory programming. Arc continues to occupy a niche role within the Lisp family, valued particularly by programmers interested in lightweight, expressive language tools and in the design of web applications or rapid prototypes.