Synonyms
Definition
Concurrent ML (CML) is a higher-order concurrent language embedded in the sequential language Standard ML (SML). CML’s basic programming model consists of dynamically created threads that communicate via message passing over dynamically created channels. CML also provides first-class synchronous operations, called event values, which support user-defined synchronization and communication abstractions. While the term “CML” refers to a specific language implementation, it is also used to refer to implementations of its language primitives in other systems.
Discussion
Concurrent ML Basics
Concurrent ML was designed with the goal of supporting high-level concurrent programming. Its design was originally motivated by the idea that user-interface software should be concurrent and that message passing was the best way to construct such concurrent programs [5, 30, 38]. Its basic concurrency features were heavily influenced by earlier message-passing designs, including...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Bibliography
Appel AW, MacQueen DB (1991) Standard ML of New Jersey. In: Programming language implementation and logic programming. Lecture notes in computer science, vol 528. Springer, New York, pp 1–26
Appel AW (1992) Compiling with continuations. Cambridge University Press, Cambridge
Berry D, Milner R, Turner DN (1992) A semantics for ML concurrency primitives. In: Conference record of the 19th annual ACM symposium on principles of programming languages (POPL ’92), Albuquerque, Jan 1992, pp 119–129
Birman KP, Joseph TA (1987) Reliable communication in the presence of failures. ACM T Comput Syst 5(1):47–76
Cardelli L, Pike R (1985) Squeak: a language for communicating with mice. In: SIGGRAPH’85, San Francisco, July 1985, pp 199–204
Cardelli L (1986) Amber. In: Combinators and functional programming languages. Lecture notes in computer science, vol 242. Springer, New York, pp 21–47, July 1986
Carriero N, Gelernter D (1989) Linda in context. Commun ACM 32(4):444–458
Chaudhuri A (2009) A Concurrent ML library in Concurrent Haskell. In: Proceedings of the 14th ACM SIGPLAN international conference on functional programming, Aug–Sept 2009. ACM, New York, pp 269–280
Cooper R, Krumvieda C (1994) Distributed programming with asynchronous ordered channels in Distributed ML. In: Birman KP, Renesse RV (eds) Reliable distributed computing with the Isis toolkit, pp 359–369. IEEE Computer Society Press, Los Alamitos
Debbabi M, Faour A, Tawbi N (1996) Efficient type-based control-flow analysis of higher order concurrent programs. In: Proceedings of the international workshop on functional and logic programming, IFL’96, Sept 1996. Lecture notes in computer science, vol 1268. Springer, New York, pp 247–266
Demaine ED (1997) Higher-order concurrency in java. In: Proceedings of the parallel programming and java conference (WoTUG20), Enschede, Apr 1997, pp 34–47. Available from http://theory.csail.mit.edu/~edemaine/papers/WoTUG20/
United States Department of Defense, American National Standards Institute (1983) Reference manual for the Ada programming language. Springer, New York
Donnelly K, Fluet M (2008) Transactional events. J Funct Program 18(5–6):649–706
Effinger-Dean L, Kehrt M, Grossman D (2008) Transactional events for ML. In: Proceedings of the 13th ACM SIGPLAN international conference on functional programming, Sept 2008. ACM, New York, pp 103–114
Flatt M, Findler RB (2004) Kill-safe synchronization abstractions. In: Proceedings of the SIGPLAN conference on programming language design and implementation (PLDI’04), June 2004. ACM, New York, pp 47–58
Fluet M, Rainey M, Reppy J, Shaw A, Xiao Y (2007) Manticore: a heterogeneous parallel language. In: Proceedings of the ACM SIGPLAN workshop on declarative aspects of multicore programming, Jan 2007. ACM, New York, pp 37–44
Fournet C, Gonthier G (1996) The reflexive CHAM and the join-calculus. In: Conference record of the 23rd annual ACM symposium on principles of programming languages (POPL’96), Jan 1996. ACM, New York, pp 372–385
Gansner ER, Reppy JH (1993) A multi-threaded higher-order user interface toolkit. Software trends, vol 1. Wiley, New York, pp 61–80
Halstead Jr RH (1985) Multilisp: a language for concurrent symbolic computation. ACM T Program Lang Syst 7(4):501–538
Hoare CAR (1978) Communicating sequential processes. Commun ACM 21(8):666–677
Jagannathan S, Weeks S (1994) Analyzing stores and references in a parallel symbolic language. In: Conference record of the 1994 ACM conference on lisp and functional programming, June 1994. ACM, New York, pp 294–305
Kelsey R, Rees J, Sperber M (2008) The incomplete scheme 48 reference manual. Available from www.s48.org
Krumvieda CD (1993) Distributed ML: abstractions for efficient and fault-tolerant programming. Ph.D. thesis, Department of Computer Science, Cornell University, Ithaca, Aug 1993. Available as Technical Report TR 93-1376
Leroy X (2000) The objective Caml system (release 3.00), Apr 2000. Available from http://caml.inria.fr
Liskov B, Shrira L (1988) Promises: linguistic support for efficient asynchronous procedure calls in distributed systems. In: Proceedings of the SIGPLAN’88 conference on programming language design and implementation, Atlanta, June 1988, pp 260–267
MLton: Concurrent ML. http://mlton.org/ConcurrentML
Nielson HR, Nielson F (1994) Higher-order concurrent programs with finite communication topology. In: Conference record of the 21st annual ACM symposium on principles of programming languages (POPL ’94), Portland, Jan 1994, pp 84–97
Panangaden P, Reppy JH (1997) The essence of concurrent ML. In: Nielson F (ed) ML with concurrency. Springer, New York (Chap 1)
Peyton Jones S, Gordon A, Finne S (1996) Concurrent haskell. In: Conference record of the 23rd annual ACM symposium on principles of programming languages (POPL’96), Jan 1996. ACM, New York, pp 295–308
Pike R (1989) A concurrent window system. Comput Syst 2(2):133–153
Reppy J, Russo C, Xiao Y (2009) Parallel concurrent ML. In: Proceedings of the 14th ACM SIGPLAN international conference on functional programming, Aug–Sept 2009. ACM, New York, pp 257–268
Reppy J, Xiao Y (2007) Specialization of CML message-passing primitives. In: Conference record of the 34th annual ACM symposium on principles of programming languages (POPL ’07), Jan 2007. ACM, New York, pp 315–326
Reppy J, Xiao Y (2008) Toward a parallel implementation of concurrent ML. In: Proceedings of the ACM SIGPLAN workshop on declarative aspects of multicore programming, Jan 2008. ACM, New York
Reppy JH (1988) Synchronous operations as first-class values. In: Proceedings of the SIGPLAN’88 conference on programming language design and implementation, Atlanta, June 1988, pp 250–259
Reppy JH (1991) CML: a higher-order concurrent language. In: Proceedings of the SIGPLAN’91 conference on programming language design and implementation, June 1991. ACM, New York, pp 293–305
Reppy JH (1991) An operational semantics of first-class synchronous operations. Technical Report TR 91-1232, Department of Computer Science, Cornell University, Ithaca, Aug 1991
Reppy JH (1999) Concurrent programming in ML. Cambridge University Press, Cambridge
Reppy JH, Gansner ER (1986) A foundation for programming environments. In: Proceedings of the ACM SIGSOFT/SIGPLAN software engineering symposium on practical software development environments, Palo Alto, pp 218–227, Dec 1986
Russell G (2001) Events in Haskell, and how to implement them. In: Proceedings of the sixth ACM SIGPLAN international conference on functional programming, Florence, Sept 2001, pp 157–168
Young C, Lakshman YN, Szymanski T, Reppy J, Pike R, Narlikar G, Mullender S, Grosse E (2001) Protium, an infrastructure for partitioned applications. In: Proceedings of the eighth IEEE workshop on hot topics in operating systems (HotOS), Elmau, Jan 2001, pp 41–46
Ziarek L, Schatz P, Jagannathan S (2006) Stabilizers: a modular checkpointing abstraction for concurrent functional programs. In: Proceedings of the eleventh ACM SIGPLAN international conference on functional programming, Sept 2006. ACM, New York, pp 136–147
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer Science+Business Media, LLC
About this entry
Cite this entry
Reppy, J. (2011). Concurrent ML. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_47
Download citation
DOI: https://doi.org/10.1007/978-0-387-09766-4_47
Publisher Name: Springer, Boston, MA
Print ISBN: 978-0-387-09765-7
Online ISBN: 978-0-387-09766-4
eBook Packages: Computer ScienceReference Module Computer Science and Engineering