HOME

TheInfoList



OR:

MultiLisp is a functional
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
, a
dialect A dialect is a Variety (linguistics), variety of language spoken by a particular group of people. This may include dominant and standard language, standardized varieties as well as Vernacular language, vernacular, unwritten, or non-standardize ...
of the language
Lisp Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation. Originally specified in the late 1950s, ...
, and of its dialect Scheme, extended with constructs for
parallel computing Parallel computing is a type of computing, computation in which many calculations or Process (computing), processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time. ...
execution and shared memory. These extensions involve
side effects In medicine, a side effect is an effect of the use of a medicinal drug or other treatment, usually adverse but sometimes beneficial, that is unintended. Herbal and traditional medicines also have side effects. A drug or procedure usually used ...
, rendering MultiLisp nondeterministic. Along with its parallel-programming extensions, MultiLisp also had some unusual garbage collection and task scheduling algorithms. Like Scheme, MultiLisp was optimized for symbolic computing. Unlike some parallel programming languages, MultiLisp incorporated constructs for causing side effects and for explicitly introducing parallelism. It was designed by Robert H. Halstead Jr., in the early 1980s for use on the 32-processor Concert
multiprocessor Multiprocessing (MP) is the use of two or more central processing units (CPUs) within a single computer system. The term also refers to the ability of a system to support more than one processor or the ability to allocate tasks between them. The ...
then being developed at
Massachusetts Institute of Technology The Massachusetts Institute of Technology (MIT) is a Private university, private research university in Cambridge, Massachusetts, United States. Established in 1861, MIT has played a significant role in the development of many areas of moder ...
(MIT) and implemented in Interlisp. It influenced the development of the Scheme dialects Gambit, and Interlisp- VAX.


PCALL and FUTURE

MultiLisp achieves parallelism with the PCALL macro, where (PCALL Fun A B C ...) is equivalent to (Fun A B C ...) except that the
argument An argument is a series of sentences, statements, or propositions some of which are called premises and one is the conclusion. The purpose of an argument is to give reasons for one's conclusion via justification, explanation, and/or persu ...
s A, B, C, etc. are explicitly allowed to be evaluated in parallel; this circumvents the usual order of evaluation, which is sequential and left to right. It also makes use of a parallel programming construct called futures, which resembles forking, combined with
lazy evaluation In programming language theory, lazy evaluation, or call-by-need, is an evaluation strategy which delays the evaluation of an Expression (computer science), expression until its value is needed (non-strict evaluation) and which avoids repeated eva ...
. Using this construct, an expression such as (
cons In computer programming, ( or ) is a fundamental function in most dialects of the Lisp programming language. ''constructs'' memory objects which hold two values or pointers to two values. These objects are referred to as (cons) cells, conses, ...
(FUTURE A) (FUTURE B))
can be written, which will overlap the evaluation of the expressions A and B, not only with each other, but with computations that use the result of the
cons In computer programming, ( or ) is a fundamental function in most dialects of the Lisp programming language. ''constructs'' memory objects which hold two values or pointers to two values. These objects are referred to as (cons) cells, conses, ...
call, until an operation is performed that needs correct information about the value of A or B.


See also

* Speculative evaluation


References

* * * * * * {{Lisp programming language Concurrent programming languages Dynamically typed programming languages Functional languages Lisp programming language family Multi-paradigm programming languages