| Arc | |
|---|---|
| Paradigms | Multi-paradigm:functional,meta,procedural |
| Family | Lisp |
| Designed by | Paul Graham |
| Developers | Paul Graham,Robert Tappan Morris, Arccommunity |
| First appeared | 29 January 2008; 17 years ago (2008-01-29) |
| Stable release | |
| Typing discipline | Dynamic |
| Implementation language | Racket,Common Lisp |
| Platform | IA-32,x86-64 |
| OS | Linux |
| License | Artistic License 2.0 |
| Filename extensions | .arc |
| Website | arclanguage |
| Majorimplementations | |
| Arc, Anarki, Arcadia, Rainbow | |
| Influenced by | |
| Lisp,Scheme | |
Arc is aprogramming language, adialect of the languageLisp, developed byPaul Graham andRobert Morris. It isfree and open-source software released under theArtistic License 2.0.
In 2001, Paul Graham announced that he was working on a newdialect of Lisp namedArc. Over the years since, he has written several essays describing features or goals of the language, and some internal projects at Graham'sstartupbusiness incubator namedY Combinator have been written in Arc, most notably theHacker News web forum and news aggregator program. Arc was written inRacket.[2] It has been rewritten using theCommon Lisp implementationSBCL and called it is called Clarc.
In the essayBeing Popular[3] Graham describes a few of his goals for the language. While many of the goals are very general ("Arc should be hackable", "there should be goodlibraries"), he did give some specifics. For example, he believes it is important for a language to be terse:
It would not be far from the truth to say that a hacker about to write a program decides what language to use, at least subconsciously, based on the total number of characters he'll have to type. If this isn't precisely how hackers think, a language designer would do well to act as if it were.
He also stated that it is better for a language to only implement a small number ofaxioms, even when that means the language may not have features that large organizations want, such asobject-orientation (OO). Further, Graham thinks that OO is not useful as its methods andpatterns are just "good design", and he views the language features used to implement OO as partly mistaken.[4][5] At Arc's introduction in 2008, Graham stated one of its benefits was its brevity.[6]
A controversy among Lisp programmers is whether, and how much, thes-expressions of the language should be complemented by other forms ofsyntax. Graham thinks that added syntax should be used in situations where pure s-expressions would be overly verbose, saying, "I don't think we should be religiously opposed to introducing syntax into Lisp." Graham also thinks that efficiency problems should be solved by giving the programmer a goodprofiler.[7]
When released in 2008, Arc generated mixed reactions, with some calling it simply an extension to Lisp orScheme and not a programming language in its own right. Others applauded Arc for stripping Lisp down to bare essentials. Shortly after its release, Arc was ported toJavaScript, and was being supported bySchemescript, anintegrated development environment (IDE) based onEclipse.[8]
Hello world in Arc :
(prn"Hello, World")
To illustrate Arc's terseness, Graham uses a brief program. It produces a form with one field at the url "/said". When the form is submitted, it leads to a page with a link that says "click here", which then leads to a page with the value of the original input field.[9]
(defopsaidreq(aform[onlink"click here"(pr"you said: "(arg_"foo"))](input"foo")(submit)))
The first publicly released version of Arc was made available on 29 January 2008,[10] implemented onRacket (named PLT-Scheme then). The release comes in the form of a.tar archive, containing the Racketsource code for Arc. A tutorial[11] and a discussion forum[12] are also available. The forum uses the same program thatHacker News does, and is written in Arc.[citation needed]
Due to lack of updates in the official Arc branch, some members of the Arccommunity started their own repositories with unofficial modifications, extensions, and libraries. One version,Anarki,[13] permitted[14] anyone to submit changes to the project and has a community managed wiki.[15]
Rainbow[16] is an implementation of Arc inJava.
Arcadia[17] is an implementation of Arc inC.
Arc++[18] is an implementation of Arc inC++.
| 1958 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LISP 1, 1.5,LISP 2(abandoned) | |||||||||||||||
| Maclisp | |||||||||||||||
| Interlisp | |||||||||||||||
| MDL | |||||||||||||||
| Lisp Machine Lisp | |||||||||||||||
| Scheme | R5RS | R6RS | R7RS small | ||||||||||||
| NIL | |||||||||||||||
| ZIL (Zork Implementation Language) | |||||||||||||||
| Franz Lisp | |||||||||||||||
| muLisp | |||||||||||||||
| Common Lisp | ANSI standard | ||||||||||||||
| Le Lisp | |||||||||||||||
| MIT Scheme | |||||||||||||||
| XLISP | |||||||||||||||
| T | |||||||||||||||
| Chez Scheme | |||||||||||||||
| Emacs Lisp | |||||||||||||||
| AutoLISP | |||||||||||||||
| PicoLisp | |||||||||||||||
| Gambit | |||||||||||||||
| EuLisp | |||||||||||||||
| ISLISP | |||||||||||||||
| OpenLisp | |||||||||||||||
| PLT Scheme | Racket | ||||||||||||||
| newLISP | |||||||||||||||
| GNU Guile | |||||||||||||||
| Visual LISP | |||||||||||||||
| Clojure | |||||||||||||||
| Arc | |||||||||||||||
| LFE | |||||||||||||||
| Hy | |||||||||||||||