Generated by DeepSeek V3.2| Arc (programming language) | |
|---|---|
| Name | Arc |
| Paradigm | Multi-paradigm |
| Designer | Paul Graham and Robert Morris |
| Latest release version | 3.1 |
| Latest release date | 2009 |
| Influenced by | Lisp, Scheme |
| Influenced | Clojure, Racket |
| Operating system | Cross-platform |
| License | Perl Artistic License |
Arc (programming language). Arc is a dialect of the Lisp programming language developed by Paul Graham and Robert Morris. It was designed as an exploratory vehicle for new ideas in language design, particularly focusing on conciseness and expressiveness for web development. The language's development and philosophy were closely tied to the activities of the startup incubator Y Combinator.
The initial conception of Arc was announced by Paul Graham in 2001, with its development being a long-term project to create a new Lisp for the modern era. The first public release, Arc 0, occurred in 2008, following years of discussion within the hacker community. Development was closely associated with Y Combinator, the venture firm co-founded by Graham, which used an early version for its internal site, Hacker News. Subsequent releases, including version 3.1 in 2009, were made available via the Git repository on the website Arclanguage.org. The language's development has been sporadic, with its creators treating it more as a research project than a product for widespread adoption.
The core design philosophy, articulated in essays by Paul Graham such as "The Hundred-Year Language", emphasized succinctness and the removal of historical accidents found in older languages like Common Lisp. A key tenet was that a powerful language should be small, with a minimal set of orthogonal axioms, enabling programmers to build complex abstractions from simple parts. Features promoting this include first-class continuations, powerful macro facilities inherited from Lisp, and an emphasis on symbolic programming. The language was also designed with web application development as a primary use case, integrating concepts for server-side scripting and templating.
Arc inherits its fundamental syntactic structure from its Lisp heritage, using S-expressions and prefix notation. This provides a highly homoiconic environment where code and data share the same representation. Semantically, it is a dynamically typed language with latent typing. It simplifies certain traditional Lisp constructs; for example, it uses a single namespace for functions and variables, unlike the separate namespaces in Common Lisp or Scheme. Control structures like if and looping forms are built from its core syntactic elements. The language also introduces unique syntactic shortcuts for common operations, aiming to reduce boilerplate code.
The canonical implementation of Arc is written in Racket (formerly PLT Scheme), which provides the underlying runtime and garbage collector. This implementation strategy allowed the developers to leverage the existing, robust infrastructure of the Racket system while focusing on the design of Arc itself. The language distribution includes Anarki, a community-managed fork hosted on GitHub that incorporates patches and experimental features not present in the official release. Other experimental variants and personal implementations have been discussed within the Arclanguage.org forum, but the Racket-based version remains the primary reference.
Reception within the programming community was mixed, marked by significant initial interest due to the stature of Paul Graham in the hacker and startup worlds, followed by critique over its incomplete standard libraries and niche adoption. It influenced the design of other Lisp-like languages, with concepts seen in later projects such as Clojure's emphasis on practicality and Racket's language-oriented programming. Its most tangible legacy is arguably the website Hacker News, which continues to operate using the language. While not achieving mainstream use, Arc remains a notable experiment in pursuing minimalist language design principles.
Category:Lisp programming language family Category:Programming languages created in 2008 Category:Cross-platform software