MultiLisp
Paradigms | Multi-paradigm:functional,imperative,concurrent,meta |
---|---|
Family | Lisp |
Designed by | Robert H. Halstead Jr. |
Developer | Massachusetts Institute of Technology(MIT |
First appeared | 1980 |
Typing discipline | Dynamic,latent,strong |
Scope | Lexical |
Implementation language | Interlisp |
Platform | Concertmultiprocessor |
License | Proprietary |
Influenced by | |
Lisp,Scheme | |
Influenced | |
Gambit,Interlisp-VAX |
MultiLispis afunctionalprogramming language,adialectof the languageLisp,and of its dialectScheme,extended with constructs forparallel computingexecution andshared memory.These extensions involveside effects,rendering MultiLispnondeterministic.Along with its parallel-programming extensions, MultiLisp also had some unusualgarbage collectionand task scheduling algorithms. Like Scheme, MultiLisp was optimized forsymbolic 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 Concertmultiprocessorthen being developed atMassachusetts Institute of Technology(MIT) and implemented inInterlisp.It influenced the development of the Scheme dialectsGambit,[1]and Interlisp-VAX.
PCALL and FUTURE
[edit]MultiLisp achieves parallelism with the PCALLmacro,where
(PCALL Fun A B C...)
is equivalent to
(Fun A B C...)
except that theargumentsA, 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 calledfutures,which resemblesforking,combined withlazy evaluation.Using this construct, an expression such as
(cons(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 theconscall, until an operation is performed that needs correct information about the value of A or B.
See also
[edit]References
[edit]- Halstead, Robert H. Jr. (October 1985)."MultiLisp: A Language for Concurrent Symbolic Computation".ACM Transactions on Programming Languages and Systems.7(4): 501–538.doi:10.1145/4472.4478.S2CID1285424.
- Koomen, Johannes A. G. M. (1980).The Interlisp Virtual Machine: A Study of its Design and its Implementation as Multilisp(MSc). University of British Columbia.
- Bates, Raymond L.; Dyer, David; Koomen, Johannes A. G. M. (15–18 August 1982). "Implementation of Interlisp on the VAX".LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming.ACM symposium on LISP and functional programming.Pittsburgh,Pennsylvania, United States. pp. 81–87.
- Halstead, Robert H. Jr. (1984).The MultiLisp Language: Lisp for a Multiprocessor.Conference on 5th Generation Computers. Tokyo, Japan.
- Martins, W.S. "Parallel Implementations of Functional Languages".Proceedings of the 4th Int. Workshop on the Parallel Implementation of Functional Languages:92.
- Skillicorn, David B.; Talia, Domenico (June 1998)."Models and languages for parallel computation".ACM Computing Surveys.30(2): 123–169.doi:10.1145/280277.280278.S2CID9308854.