Arc (programming language)

Open-source programming language

Not to be confused with ARC Macro Language.

Arc

Paradigms| Multi-paradigm: functional, meta, procedural
Family| Lisp
Designed by| Paul Graham
Developers| Paul Graham, Robert Morris,
Arc community
First appeared| 29 January 2008; 17 years ago (2008-01-29)
Stable release|

3.2 / 28 October 2018; 6 years ago (2018-10-28)[1]

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.org
Major implementations
Arc, Anarki, Arcadia, Rainbow
Influenced by
Lisp, Scheme

Arc is a programming language, a dialect of the language Lisp, developed by Paul Graham and Robert Morris. It is free and open-source software released under the Artistic License 2.0.

## History

[edit]

In 2001, Paul Graham announced that he was working on a new dialect of Lisp named Arc. Over the years since, he has written several essays describing features or goals of the language, and some internal projects at Graham's startup business incubator named Y Combinator have been written in Arc, most notably the Hacker News web forum and news aggregator program. Arc is written in Racket.[2]

## Motives

[edit]

In the essay Being 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 good libraries"), 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 of axioms, even when that means the language may not have features that large organizations want, such as object-orientation (OO). Further, Graham thinks that OO is not useful as its methods and patterns 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, the s-expressions of the language should be complemented by other forms of syntax. 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 good profiler.[7]

### Reception

[edit]

When released in 2008, Arc generated mixed reactions, with some calling it simply an extension to Lisp or Scheme 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 to JavaScript, and was being supported by Schemescript, an integrated development environment (IDE) based on Eclipse.[8]

## Examples

[edit]

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]

(defop said req
(aform [onlink "click here" (pr "you said: " (arg _ "foo"))]
(input "foo")
(submit)))

## Versions

[edit]

### Official version

[edit]

The first publicly released version of Arc was made available on 29 January 2008,[10] implemented on Racket (named PLT-Scheme then). The release comes in the form of a .tar archive, containing the Racket source code for Arc. A tutorial[11] and a discussion forum[12] are also available. The forum uses the same program that Hacker News does, and is written in Arc.[citation needed]

### Unofficial versions

[edit]

Due to lack of updates in the official Arc branch, some members of the Arc community 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 in Java.

Arcadia[17] is an implementation of Arc in C.

Arc++[18] is an implementation of Arc in C++.

### Timeline of LISP Dialects

[edit]

Timeline of Lisp dialects

* v
* t
* e

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

## References

[edit]

1. ^ "Arc Forum: Tell Arc: Arc 3.2". Arclanguage.org. Retrieved 2018-11-07.
2. ^ "Arc Forum: install". Arclanguage.org. Retrieved 2018-11-07.
3. ^ Graham, Paul (May 2001). "Being Popular". PaulGraham.com. Retrieved 2018-12-05.
4. ^ Graham, Paul. "Why Arc Isn't Especially Object-Oriented". PaulGraham.com. Retrieved 2018-12-05.
5. ^ Graham, Paul. "Arc FAQ". PaulGraham.com. Retrieved 2018-12-05.
6. ^ Huber, Mathias (2008-02-08). "Arc Makes Programs Shorter". Linux Magazine. Lawrence, Kansas: Linux New Media USA. Retrieved 2018-11-25.
7. ^ Graham, Paul (May 2001). "Five Questions About Language Design". PaulGraham.com. Retrieved 2018-12-05.
8. ^ "Web pioneer hits critics with Lisp gauntlet". The Register. UK. 2008-02-07.
9. ^ Graham, Paul (February 2008). "Take the Arc Challenge". PaulGraham.com. Retrieved 2018-12-05.
10. ^ Graham, Paul (29 January 2008). "Arc's Out". PaulGraham.com. Retrieved 2018-12-05.
11. ^ "Arc Tutorial". Paul Graham. Retrieved 2018-12-05..
12. ^ "Arc Forum". Arc language.
13. ^ Rapp, Kenneth (kennethrapp) (14 November 2018). "Anarki". GitHub. Retrieved 2018-12-05.
14. ^ Agaram, Kartik (akkartik) (27 May 2013). "Announcement: anarki is no longer world-committable". Arc Forum. Arc language. Retrieved 2018-12-05.
15. ^ "Arc Lang Wiki". Sites. Retrieved 2018-12-05.
16. ^ Dalton, Conan (conanite) (12 October 2010). "Rainbow". GitHub. Retrieved 2018-12-05.
17. ^ Kim, Taegyoon (kimtg) (19 August 2018). "Arcadia". GitHub. Retrieved 2018-12-05.
18. ^ Kim, Taegyoon (kimtg) (13 August 2023). "Arcpp". GitHub. Retrieved 2023-08-13.

## External links

[edit]

* Official website
* Tutorial
* Anarki on GitHub

* v
* t
* e

Lisp programming

Features|

* Automatic storage management
* Conditionals
* Dynamic typing
* Higher-order functions
* Linked lists
* Macros
* M-expressions (deprecated)
* Read–eval–print loop
* Recursion
* S-expressions
* Self-hosting compiler
* Tree data structures

Object systems|

* Common Lisp Object System (CLOS)
* CommonLoops
* Flavors

Implementations|

| Standardized|

| Common
Lisp|

* Allegro Common Lisp
* Armed Bear Common Lisp (ABCL)
* CLISP
* Clozure CL
* CMU Common Lisp (CMUCL)
* Corman Common Lisp
* Embeddable Common Lisp (ECL)
* GNU Common Lisp (GCL)
* LispWorks
* Macintosh Common Lisp
* Mocl
* Movitz
* Poplog
* Steel Bank Common Lisp (SBCL)
* Symbolics Common Lisp

|

Scheme|

* History
* Bigloo
* Chez Scheme
* Chicken
* Gambit
* Game Oriented Assembly Lisp (GOAL)
* GNU Guile
* Ikarus
* JScheme
* Kawa
* MIT/GNU Scheme
* MultiLisp
* Pico
* Pocket Scheme
* Racket (features)
* Scheme 48
* SCM
* SIOD
* T
* TinyScheme

ISLISP|

* OpenLisp

Unstandardized|

| Logo|

* MSWLogo
* NetLogo
* StarLogo
* UCBLogo

|

POP|

* COWSEL (POP-1)
* POP-2
* POP-11

* Arc
* AutoLISP
* BBN LISP
* Clojure
* Dylan (Apple, history)
* Emacs Lisp
* EuLisp
* Franz Lisp, PC-LISP
* Hy
* Interlisp
* Knowledge Engineering Environment
* *Lisp
* LeLisp
* LFE
* LISP 2
* Lisp Machine Lisp
* Lispkit Lisp
* Maclisp
* MDL
* MLisp
* newLISP
* NIL
* PC-LISP
* Picolisp
* Portable Standard Lisp
* RPL
* S-1 Lisp
* SKILL
* Spice Lisp
* Zetalisp

Operating system|

* List
* Common Lisp Interface Manager, McCLIM
* Genera
* Scsh

Hardware|

* Lisp machine
* TI Explorer
* Space-cadet keyboard

Community
of practice|

| Technical standards|

* Scheme Requests for Implementation
* Common Lisp HyperSpec
* X3J13

|

Education|

| Books|

* Common Lisp the Language
* How to Design Programs (HTDP)
* On Lisp
* Practical Common Lisp
* Structure and Interpretation of Computer Programs (SICP)

|

Curriculum|

* ProgramByDesign

Organizations|

| Business|

* Apple Computer
* Bolt, Beranek and Newman
* Harlequin
* Lucid Inc.
* Symbolics
* Xanalys

|

Education|

* Massachusetts Institute of Technology (MIT)
* MIT Computer Science and Artificial Intelligence Laboratory (CSAIL)
* Stanford Artificial Intelligence Laboratory
* University of California, Berkeley

People|

* Edmund Berkeley
* Daniel G. Bobrow
* William Clinger
* R. Kent Dybvig
* Matthias Felleisen
* Robert Bruce Findler
* Matthew Flatt
* Phyllis Fox
* Paul Graham
* Richard Greenblatt
* Timothy P. Hart
* Louis Hodes
* Mike Levin
* David Luckham
* John McCarthy
* Robert Tappan Morris
* Joel Moses
* David Park
* Steve Russell
* Richard Stallman

Common Lisp|

* Scott Fahlman
* Richard P. Gabriel
* Philip Greenspun (10th rule)
* David A. Moon
* Kent Pitman
* Guy L. Steele Jr.
* Daniel Weinreb

Scheme|

* Matthias Felleisen
* Shriram Krishnamurthi
* Guy L. Steele Jr.
* Gerald Jay Sussman
* Julie Sussman

Logo|

* Hal Abelson
* Denison Bollay
* Wally Feurzeig
* Brian Harvey
* Seymour Papert
* Mitchel Resnick
* Cynthia Solomon

POP|

* Rod Burstall
* Robin Popplestone

List Books Commons Category Category
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template