Abstract
This paper presents a new dialect of Scheme aimed towards concurrency and distribution. It offers a few primitives, including first-class continuations, with very simple semantics. Numerous examples are given showing how to program the classical concurrent control operators such as future, pcall and either. The implementation is sketched and presented along the lines of a metacircular interpreter.
This work has been partially funded by GDR-PRC de Programmation du CNRS.
Preview
Unable to display preview. Download preview PDF.
References
Pierre America and Jan Rutten. A parallel object-oriented language: design and semantic foundations. In J W Bakker, editor, Languages for Parallel Architectures: Design, Semantics, Implementation Models. Wiley, 1989.
Henry G Baker. Equal rights for functional objects or, the more things change, the more they are the same. Technical report, Nimble Computer Corporation, 16231 Meadow Ridge Way, Encino, CA 91436, USA, October 1990.
H E Bal, M F Kaashoek, and A S Tanenbaum. Orca: A language for parallel programming of distributed systems. IEEE Transactions on Software Engineering, 18(3):190–205, March 1992.
Paul S Barth, Rishiyur S Nikhil, and Arvind. M-structures: Extending a parallel, non-strict, functional language with state. In John Hughes, editor, FPCA '91-Functional Programming and Computer Architecture, volume Lecture Notes in Computer Science 523, pages 538–568, Cambridge (Mass. USA), August 1991. Springer-Verlag.
Alan Burns. Programming in Occam 2. the Instruction Set Series. Addison Wesley, 1988.
William D. Clinger, Anne H. Hartheimer, and Eric M. Ost. Implementation strategies for continuations. In Conference Record of the 1988 ACM Conference on Lisp and Functional Programming, page 124 131, August 1988.
Henry Clark and Bruce McMillin. Dawgs-a distributed compute server utilizing idle workstations. Journal of Parallel and Distributed Computing, 14(2):175–186, February 1992.
William Clinger and Jonathan A Rees. The revised 4 report on the algorithmic language scheme. Lisp Pointer, 4(3), 1991.
David C. DeRoure. Experiences with Lisp and distributed systems. In High Performance and Parallel Computing in Lisp, November 1990. Also appears as Technical Report CSTR90-21, Department of Electronics and Computer Science, University of Southampton.
David C. DeRoure. A Lisp Environment for Modelling Distributed Systems. PhD thesis, Dept. of Electronics and Computer Science, University of Southampton, January 1990.
David C. DeRoure. QPL3-Continuations, concurrency and communication. Technical Report CSTR 90-20, Department of Electronics and Computer Science, University of Southampton, 1990.
Alain Deutsch. On determining lifetime and aliasing of dynamically allocated data in higher-order functional specifications. In POPL '90-Seventeenth Annual ACM symposium on Principles of Programming Languages, pages 157–168, San Francisco, January 1990.
Partha Dasgupta, Richard J LeBlanc Jr., Mustaque Ahamad, and Umakishore Ramachandran. The clouds distributed operating system. Computer, 24(11):34–44, November 1991.
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, Inc., Englewood Cliffs, New Jersey, 1987.
Matthias Felleisen, Mitchell Wand, Daniel P. Friedman, and Bruce Duba. Abstract continuations: a mathematical semantics for handling functional jumps. In Proceedings of the 1988 ACM Symposium on LISP and Functional Programming, Salt Lake City, Utah., July 1988.
Ron Goldman and Richard P. Gabriel. Preliminary results with the initial implementation of qlisp. In LFP '88 — ACM Symposium on Lisp and Functional Programming, pages 143–152, Snowbird (Utah USA), 1988.
Ron Goldman, Richard P. Gabriel, and Carol Sexton. Qlisp: An interim report. In Takayasu Ito and Robert H Halstead Jr., editors, Parallel Lisp: Languages and Systems, US/Japan Workshop, volume Lecture Notes in Computer Science 441, Sendai (Japan), June 1989. Springer-Verlag.
J F Giorgi and Daniel Le Métayer. Continuation-based parallel implementation of functional programming languages. In LFP '90 — ACM Symposium on Lisp and Functional Programming, pages 209–217, Nice (France), June 1990.
Richard P Gabriel and John McCarthy. Queue-based multi-processing lisp. In LFP '84 — ACM Symposium on Lisp and Functional Programming, pages 9–17, Austin (Texas USA), 1984.
Robert H. Halstead, Jr. Implementation of multilisp: Lisp on a multiprocessor. In LFP '84 — ACM Symposium on Lisp and Functional Programming, pages 9–17, Austin (Texas USA), 1984.
Robert H. Halstead, Jr. New ideas in parallel lisp: Language design, implementation, and programming tools. In Robert H Halstead, Jr. and Takayasu Ito, editors, US-Japan Workshop on Parallel Lisp, volume Lecture Notes in Computer Science 441, Sendai (Japan), June 1989. Springer-Verlag.
Robert Hieb and R. Kent Dybvig. Continuations and concurrency. In PPOPP '90 — ACM SIGPLAN Symposium on Principles and Practices of Parallel Programming, pages 128–136, Seattle (Washington US), March 1990.
Robert Hieb, R. Kent Dybvig, and Carl Bruggeman. Representing control in the presence of first-class continuations. In Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation, pages 66–77, White Plains, New York, June 1990.
Christopher T. Haynes, Daniel P. Friedman, and Mitchell Wand. Continuations and coroutines. In Conference Record of the 1984 ACM Symposium on Lisp and Functional Programming, pages 293–298, Austin, TX., 1984.
Takayasu Ito and Manabu Matsui. A parallel lisp language PaiLisp and its kernel specification. In Takayasu Ito and Robert H Halstead, Jr., editors, Proceedings of the US/Japan Workshop on Parallel Lisp, volume Lecture Notes in Computer Science 441, pages 58–100, Sendai (Japan), June 1989. Springer-Verlag.
Pierre Jouvelot and David K Gifford. Reasoning about continuations with control effects. In ACM SIGPLAN Programming Languages Design and Implementation, volume 24 of SIGPLAN Notices, pages 218–225, Portland (OR), June 1989. SIG-PLAN, ACM Press.
Eugene E. Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic macro expansion. Symposium on LISP and Functional Programming, pages 151–161, August 1986.
David Kranz, Richard Kelsey, Jonathan A. Rees, Paul Hudak, James Philbin, and Norman I. Adams. Orbit: an optimizing compiler for scheme. In Proceedings of the SIGPLAN '86 Symposium on Compiler Construction, pages 219–233. ACM, June 1986.
Robert R. Kessler and Mark R. Swanson. Concurrent scheme. In US-Japan Workshop on Parallel Lisp, volume Lecture Notes in Computer Science 441, Sendai (Japan), June 1989. Springer-Verlag.
Morry Katz and Daniel Weise. Continuing into the future: On the interaction of futures and first-class continuations. In LFP '90 — ACM Symposium on Lisp and Functional Programming, pages 176–184, Nice (France), 1990.
Bernard Lang, Christian Queinnec, and José Piquer. Garbage collecting the world. In POPL '92 — Nineteenth Annual ACM symposium on Principles of Programming Languages, pages 39–50, Albuquerque (New Mexico, USA), January 1992.
John McCarthy. A basis for a mathematical theory of computation. In Braffort and Hirshberg, editors, Computer Programming and Formal Systems. North Holland, 1963.
Thanasis Mitsolides and Malcolm Harrison. Generators and the replicator control structure in the parallel environment of alloy. In PLDI '90-ACM SIGPLAN Programming Languages Design and Implementation, pages 189–196, White Plains (New-York USA), 1990.
Eric Mohr, David A. Kranz, and Robert H. Halstead, Jr. Lazy task creation: A technique for increasing the granularity of parallel programs. In LFP '90 — ACM Symposium on Lisp and Functional Programming, pages 185–198, Nice (France), 1990.
Luc Moreau. An operational semantics for a parallel functional language with continuations. In D. Etiemble and J-C. Syre, editors, PARLE '92 — Parallel Architectures and Languages Europe, pages 415–430, Paris (France), June 1992. Lecture Notes in Computer Science 605, Springer-Verlag.
Randy B. Osborne. Speculative computation in MultiLisp, an overview. In LFP '90 — ACM Symposium on Lisp and Functional Programming, pages 198–208, Nice (France), 1990.
R. H. Perrott. Parallel Programming. Addison Wesley, 1987.
José Piquer. Sharing data structures in a distributed lisp. In High Performance and Parallel Computing in Lisp, Twickenham, London (UK), November 1990. a EUROPAL workshop.
José Piquer. Preserving distributed data coherence using asynchronous broadcasts. In Eleventh International Conference of the Chilean Computer Science Society, pages 283–290, Santiago (Chile), October 1991. Plenum Publishing Corporation, New York NY (USA).
Gianfranco Prini. Explicit parallelism in Lisp-like languages. In Conference Record of the 1980 Lisp Conference, pages 13–18, Stanford (California USA), August 1980. The Lisp Conference, P.O. Box 487, Redwood Estates CA 95044.
Christian Queinnec and Julian Padget. Modules, Macros and Lisp. In Eleventh International Conference of the Chilean Computer Science Society, pages 111–123, Santiago (Chile), October 1991. Plenum Publishing Corporation, New York NY (USA).
Christian Queinnec and Bernard Serpette. A Dynamic Extent Control Operator for Partial Continuations. In POPL '91 — Eighteenth Annual ACM symposium on Principles of Programming Languages, pages 174–184, Orlando (Florida USA), January 1991.
Christian Queinnec. PolyScheme: A Semantics for a Concurrent Scheme. In Workshop on High Performance and Parallel Computing in Lisp, Twickenham (UK), November 1990. European Conference on Lisp and its Practical Applications.
Christian Queinnec. Crystal Scheme, A Language for Massively Parallel Machines. In M Durand and F El Dabaghi, editors, Second Symposium on High Performance Computing, pages 91–102, Montpellier (France), October 1991. North Holland.
Christian Queinnec. A concurrent and distributed extension to scheme. In D. Etiemble and J-C. Syre, editors, PARLE '92 — Parallel Architectures and Languages Europe, pages 431–446, Paris (France), June 1992. Lecture Notes in Computer Science 605, Springer-Verlag.
Christian Queinnec. Value transforming style. Research Report LIX RR 92/07, Laboratoire d'Informatique de l'école Polytechnique, 91128 Palaiseau Cedex, France, May 1992.
Rajendra K. Raj, Ewan D. Tempero, Henry M. Levy, Andrew P. Black, Norman C. Hutchinson, and Eric Jul. Emerald: A general-purpose programming language. Software — Practice and Experience, 21(1):91–118, January 1991.
James W. Stamos and David K. Gifford. Implementing remote evaluation. IEEE Trans. on Software Engineering, 16(7):710–722, July 1990.
Rfc 1014: external data representation standard: Protocol specification. Technical report, ARPA Network Information Center.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Queinnec, C., De Roure, D. (1993). Design of a concurrent and distributed language. In: Halstead, R.H., Ito, T. (eds) Parallel Symbolic Computing: Languages, Systems, and Applications. PSC 1992. Lecture Notes in Computer Science, vol 748. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0018655
Download citation
DOI: https://doi.org/10.1007/BFb0018655
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57396-8
Online ISBN: 978-3-540-48133-1
eBook Packages: Springer Book Archive