X3J13

Last updated

X3J13 is the name of a technical committee which was part of the International Committee for Information Technology Standards (INCITS, then named X3). The X3J13 committee was formed in 1986 to draw up an American National Standards Institute (ANSI) Common Lisp standard based on the first edition of the book Common Lisp the Language (also termed CLtL, or CLtL1), by Guy L. Steele Jr., which was formerly a de facto standard for the language. The primary output of X3J13 was an American National Standard for programming language Common Lisp (X3.226/1994), approved December 8, 1994. X3J13 later worked with International Organization for Standardization (ISO) working group SC22/WG16 on an internationally standardised dialect of Lisp named ISLISP.

Contents

Organisation

The original chair of the committee was Doctor Robert Mathis of Ohio State University, with Mary van Deusen as secretary. Guy L. Steele Jr. was originally the vice-chair. In later years, Mathis stepped down as chair and Steele assumed that role.

The efforts of the committee were guided by its charter, the successful creation of which is credited to the coordinating efforts of Susan P. Ennis, a representative of Amoco Production Company. [1] The charter lays out the committee's goals and priorities, and a broadly defined list of some topics to be addressed.

Subcommittees

The committee formed several subcommittees to help its members better concentrate their efforts.

Cleanup subcommittee

The Cleanup Subcommittee, chaired by Larry Masinter, established a standardised format for the submission of proposals for voting. These issue writeups, [2] while not themselves part of the standard, were deemed sufficiently useful for the Common Lisp HyperSpec to include and cross-reference them for the benefit of readers, providing information about the original intent of the committee in its decisions. These writeups also serve as a historical record of those alternate solutions to problems which were, ultimately, not adopted.

Compiler subcommittee

Chaired by Sandra Loosemore, this subcommittee created proposals for issues relating to Lisp compiling. Guy Steele acknowledged in the second edition of Common Lisp the Language the large contribution of the Compiler Subcommittee toward clarifying the compiling process described in the first edition, parts of which Steele describes as "vague". [3]

Iteration subcommittee

Jon L. White was the chair of the Iteration Subcommittee. Among the issues dealt with by this group was the generalized LOOP macro – a domain-specific language to which the second edition of CLtL devotes a full chapter. The "ALGOL-like" syntax of this macro, differing from Lisp's more usual s-expression syntax, was and remains somewhat controversial. [4]

Character subcommittee

The Character Subcommittee, chaired by Thom Linden, had the task of defining how the standard would deal with the issues surrounding different character sets. The resolution of these matters, particularly the ability to use any character in the name of a symbol, was intended to make Common Lisp simpler for international users.

Error handling subcommittee

Chaired by Kent Pitman, the Error Handling Subcommittee plugged what was described as "the biggest outstanding hole in Common Lisp" [3] with the condition system, a general mechanism for handling errors, warnings, and other exceptional situations.

The committee referred to the resulting specification as a "condition system" rather than an "error system" [5] to accommodate one system for handling exceptional situations of various kinds, whether fatal or non-fatal, whether continuable or not, and whether the result of program error or simple resource limit (such as stack overflow). [6] Conditions are signaled at one point in the code and may be handled at another point. This use of the term "signal" is different from the typical operating system's notion of signals (except on Lisp machines where this variant use of the term evolved [7] ); the operating system notion of signaling was out of scope for this committee, and consequently was not addressed in the ANSI Common Lisp standard. Asynchronous interrupts and IEEE floating point trapping was also out of scope for this committee's work and was not addressed in the standard.

Drafting subcommittee

Kathy Chapman was the chair for the Drafting Subcommittee, which was responsible for the drafting of the actual standard document. Further, the subcommittee oversaw efforts to keep terminology consistent and accurate throughout the committee's activities.

Final document

The final standard produced by the X3J13 committee was published as American National Standard X3.226, and also in hypertext form as the Common Lisp HyperSpec.

Relation to Common Lisp the Language

The book Common Lisp the Language , although authored mostly by Guy L. Steele Jr., was the product of an ad hoc committee that had formed around 1980 and had worked collaboratively to produce the original de facto standard for Common Lisp before the formation of X3J13. X3J13 began its work with Common Lisp the Language as a base document and proceeded from there in the design of what would become ANSI Common Lisp. Steele served on the committee and gave them permission to use any or all parts of its first edition in their efforts.

Documents published by X3J13 were later used, together with quotations from certain committee members, in the production of Common Lisp the Language Second Edition, which was released in 1990, giving the Common Lisp community a way to preview many features that were expected to appear in the committee's final standard document. That edition bears similarity to the standard in content, though not in form. However, substantive changes were made, in the form of both additions and deletions, between the publication of the book and the final draft of the ANSI standard.

In sum, the original edition of Common Lisp the Language was the document on which X3J13 originally based its work. The Second Edition, by contrast, was Steele's own work, not a committee product and had no official status within X3J13 or ANSI. As acknowledged in the Second Edition preface, it was not authorized by X3J13, the choice of content as a snapshot of the work in progress was not formally synchronized with X3J13, and the final version was not reviewed or approved by X3J13.

See also

Related Research Articles

ASCII American character encoding standard

ASCII, abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Most modern character-encoding schemes are based on ASCII, although they support many additional characters.

ANSI C, ISO C and Standard C are successive standards for the C programming language published by the American National Standards Institute (ANSI) and the International Organization for Standardization (ISO). Historically, the names referred specifically to the original and best-supported version of the standard. Software developers writing in C are encouraged to conform to the standards, as doing so helps portability between compilers.

Common Lisp (CL) is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 [S2008]. The Common Lisp HyperSpec, a hyperlinked HTML version, has been derived from the ANSI Common Lisp standard.

Kyoto Common Lisp (KCL) is an implementation of Common Lisp by Taichi Yuasa and Masami Hagiya, written in C to run under Unix-like operating systems. KCL is compiled to ANSI C. It conforms to Common Lisp as described in the 1984 first edition of Guy Steele's book Common Lisp the Language and is available under a licence agreement.

Lisp (programming language) Programming language family

Lisp is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today. Only Fortran is older, by one year. Lisp has changed since its early days, and many dialects have existed over its history. Today, the best-known general-purpose Lisp dialects are Racket, Common Lisp, Scheme and Clojure.

Scheme is a minimalist dialect of the Lisp family of programming languages. Scheme consists of a small standard core with several tools for language extension.

Maclisp is a programming language, a dialect of the language Lisp. It originated at the Massachusetts Institute of Technology's (MIT) Project MAC in the late 1960s and was based on Lisp 1.5. Richard Greenblatt was the main developer of the original codebase for the PDP-6; Jon L. White was responsible for its later maintenance and development. The name Maclisp began being used in the early 1970s to distinguish it from other forks of PDP-6 Lisp, notably BBN Lisp.

In computer programming, the scope of a name binding—an association of a name to an entity, such as a variable—is the part of a program where the name binding is valid, that is where the name can be used to refer to the entity. In other parts of the program the name may refer to a different entity, or to nothing at all. The scope of a name binding is also known as the visibility of an entity, particularly in older or more technical literature—this is from the perspective of the referenced entity, not the referencing name.

Kent M. Pitman (KMP) is a programmer who has been involved for many years in the design, implementation, and use of systems based on the programming languages Lisp and Scheme. Since 2010, he has been President of HyperMeta, Inc.

Common Lisp Object System

The Common Lisp Object System (CLOS) is the facility for object-oriented programming which is part of ANSI Common Lisp. CLOS is a powerful dynamic object system which differs radically from the OOP facilities found in more static languages such as C++ or Java. CLOS was inspired by earlier Lisp object systems such as MIT Flavors and CommonLoops, although it is more general than either. Originally proposed as an add-on, CLOS was adopted as part of the ANSI standard for Common Lisp and has been adapted into other Lisp dialects such as EuLisp or Emacs Lisp.

Guy L. Steele Jr. American computer scientist (born 1954)

Guy Lewis Steele Jr. is an American computer scientist who has played an important role in designing and documenting several computer programming languages and technical standards.

Interlisp is a programming environment built around a version of the programming language Lisp. Interlisp development began in 1966 at Bolt, Beranek and Newman in Cambridge, Massachusetts with Lisp implemented for the Digital Equipment Corporation (DEC) PDP-1 computer by Danny Bobrow and D. L. Murphy. In 1970, Alice K. Hartley implemented BBN LISP, which ran on PDP-10 machines running the operating system TENEX. In 1973, when Danny Bobrow, Warren Teitelman and Ronald Kaplan moved from BBN to the Xerox Palo Alto Research Center (PARC), it was renamed Interlisp. Interlisp became a popular Lisp development tool for artificial intelligence (AI) researchers at Stanford University and elsewhere in the community of the Defense Advanced Research Projects Agency (DARPA). Interlisp was notable for integrating interactive development tools into an integrated development environment (IDE), such as a debugger, an automatic correction tool for simple errors (via do what I mean software design, and analysis tools.

The InterNational Committee for Information Technology Standards (INCITS),, is an ANSI-accredited standards development organization composed of Information technology developers. It was formerly known as the X3 and NCITS.

Common Lisp the Language is an influential reference book by Guy L. Steele about a set of technical standards and programming languages named Common Lisp.

New Implementation of LISP (NIL) is a programming language, a dialect of the language Lisp, developed at the Massachusetts Institute of Technology (MIT) during the 1970s, and intended to be the successor to the language Maclisp. It is a 32-bit implementation, and was in part a response to Digital Equipment Corporation's (DEC) VAX computer. The project was headed by Jon L White, with a stated goal of maintaining compatibility with MacLisp while fixing many of its problems.

The Common Lisp HyperSpec is a technical standard document written in the hypertext format Hypertext Markup Language (HTML). It is not the American National Standards Institute (ANSI) Common Lisp standard, but is based on it, with permission from ANSI and the International Committee for Information Technology Standards. Originally developed by Kent Pitman at Harlequin, it is now copyrighted by LispWorks Ltd. It is approximately 15 megabytes (MB) of data in 2,300 files which contain approximately 105,000 hyperlinks.

In functional programming, filter is a higher-order function that processes a data structure in some order to produce a new data structure containing exactly those elements of the original data structure for which a given predicate returns the boolean value true.

In Lisp programming languages, a fexpr is a function whose operands are passed to it without being evaluated. When a fexpr is called, only the body of the fexpr is evaluated; no other evaluations take place except when explicitly initiated by the fexpr. In contrast, when an ordinary Lisp function is called, the operands are evaluated automatically, and only the results of these evaluations are provided to the function; and when a (traditional) Lisp macro is called, the operands are passed in unevaluated, but whatever result the macro function returns is automatically evaluated.

David A. Moon is a programmer and computer scientist, known for his work on the Lisp programming language, as co-author of the Emacs text editor, as the inventor of ephemeral garbage collection, and as one of the designers of the Dylan programming language. Guy L. Steele Jr. and Richard P. Gabriel (1993) name him as a leader of the Common Lisp movement and describe him as "a seductively powerful thinker, quiet and often insulting, whose arguments are almost impossible to refute".

References

  1. Pitman, Kent M. (18 April 1999). "X3J13 Charter (annotated)". NH Place. Retrieved 2018-12-19.
  2. Masinter, Larry. "Repository of X3J13 passed cleanup issues". Xerox PARC.
  3. 1 2 Steele, Guy L. Jr. (1984). "Acknowledgments". Common Lisp the Language (second ed.). Maynard, Massachusetts: Digital Press. ISBN   0-932376-41-X.
  4. Steele, Guy L. Jr.; Gabriel, Richard P. (1993). "The Evolution of Lisp" (PDF). ACM SIGPLAN Notices. 28 (3): 85, 231–270. doi:10.1145/155360.155373 . Retrieved 2018-12-19.
  5. Pitman, Kent M. (12 March 1988). "Common Lisp Condition System, Revision #18". NH Place. Retrieved 2018-12-19.
  6. Pitman, Kent M. (February 1985). "Massachusetts Institute of Technology, Artificial Intelligence Laboratory, Working Paper 268: Exceptional Situations in Lisp" (PDF). DSpace@MIT, MIT Libraries. Massachusetts Institute of Technology. Retrieved 2018-12-19.
  7. Andre, David L.; Greenberg, Bernard S.; Moon, David A.; McMahon, Mike; Weinreb, Daniel L. (1983). Signalling and Handling Conditions (Report)., a hardcopy publication of Symbolics, Inc.