{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:33Z","timestamp":1779836733686,"version":"3.53.1"},"reference-count":61,"publisher":"Cambridge University Press (CUP)","issue":"5-6","license":[{"start":{"date-parts":[[2011,1,27]],"date-time":"2011-01-27T00:00:00Z","timestamp":1296086400000},"content-version":"unspecified","delay-in-days":87,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2010,11]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>The increasing availability of commodity multicore processors is making parallel computing ever more widespread. In order to exploit its potential, programmers need languages that make the benefits of parallelism accessible and understandable. Previous parallel languages have traditionally been intended for large-scale scientific computing, and they tend not to be well suited to programming the applications one typically finds on a desktop system. Thus, we need new parallel-language designs that address a broader spectrum of applications. The Manticore project is our effort to address this need. At its core is Parallel ML, a high-level functional language for programming parallel applications on commodity multicore hardware. Parallel ML provides a diverse collection of parallel constructs for different granularities of work. In this paper, we focus on the implicitly threaded parallel constructs of the language, which support fine-grained parallelism. We concentrate on those elements that distinguish our design from related ones, namely, a novel parallel binding form, a nondeterministic parallel case form, and the treatment of exceptions in the presence of data parallelism. These features differentiate the present work from related work on functional data-parallel language designs, which have focused largely on parallel problems with regular structure and the compiler transformations\u2014most notably, flattening\u2014that make such designs feasible. We present detailed examples utilizing various mechanisms of the language and give a formal description of our implementation.<\/jats:p>","DOI":"10.1017\/s0956796810000201","type":"journal-article","created":{"date-parts":[[2011,1,27]],"date-time":"2011-01-27T06:45:00Z","timestamp":1296110700000},"page":"537-576","source":"Crossref","is-referenced-by-count":42,"title":["Implicitly threaded parallelism in Manticore"],"prefix":"10.1017","volume":"20","author":[{"given":"MATTHEW","family":"FLUET","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"MIKE","family":"RAINEY","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"JOHN","family":"REPPY","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"ADAM","family":"SHAW","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2011,1,27]]},"reference":[{"key":"S0956796810000201_ref60","first-page":"179","volume-title":"Proceedings of the 2010 ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, New York, NY","author":"Tzannes","year":"2010"},{"key":"S0956796810000201_ref4","doi-asserted-by":"publisher","DOI":"10.1007\/3540543961_26"},{"key":"S0956796810000201_ref1","first-page":"1","volume-title":"Proceedings of the 12th ACM Annual Symposium on Parallel Algorithms and Architectures","author":"Acar","year":"2000"},{"key":"S0956796810000201_ref2","volume-title":"Concurrent Programming in ERLANG","author":"Armstrong","year":"1996"},{"key":"S0956796810000201_ref59","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796897002967"},{"key":"S0956796810000201_ref35","volume-title":"Implicit and Explicit Parallel Programming in Haskell","author":"Jones","year":"1993"},{"key":"S0956796810000201_ref48","doi-asserted-by":"crossref","first-page":"198","DOI":"10.1145\/91556.91644","volume-title":"Conference record of the 1990 ACM Conference on Lisp and Functional Programming. New York, NY","author":"Osborne","year":"1990"},{"key":"S0956796810000201_ref29","first-page":"9","volume-title":"Conference Record of the 1984 ACM Symposium on Lisp and Functional Programming. New York, NY","year":"1984"},{"key":"S0956796810000201_ref33","first-page":"94","volume-title":"Proceedings of the 14th ACM Symposium on Operating System Principles","author":"Hauser","year":"1993"},{"key":"S0956796810000201_ref20","unstructured":"Feeley M. (1993) An Efficient and General Implementation of Futures on Large Scale Shared-Memory Multiprocessors. PhD thesis, Brandeis University, Waltham, MA, USA."},{"key":"S0956796810000201_ref61","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-6423(96)00044-5"},{"key":"S0956796810000201_ref40","unstructured":"Mandel L. & Maranget L. (December 2008). The JoCaml Language Release 3.11 Documentation and User's Manual [online]. Available at: http:\/\/jocaml.inria.fr\/manual\/index.html Accessed 10 December 2010."},{"key":"S0956796810000201_ref18","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2006.05.008"},{"key":"S0956796810000201_ref6","doi-asserted-by":"crossref","first-page":"93","DOI":"10.1145\/1863543.1863558","volume-title":"Proceedings of the 15th ACM SIGPLAN International Conference on Functional Programming, New York, NY","author":"Bergstrom","year":"2010"},{"key":"S0956796810000201_ref11","doi-asserted-by":"publisher","DOI":"10.1145\/324133.324234"},{"key":"S0956796810000201_ref36","doi-asserted-by":"publisher","DOI":"10.1145\/169627.169724"},{"key":"S0956796810000201_ref49","first-page":"295","volume-title":"Conference Record of the 23rd Annual ACM Symposium on Principles of Programming Languages (popl '96). New York, NY","author":"Peyton","year":"1996"},{"key":"S0956796810000201_ref43","doi-asserted-by":"publisher","DOI":"10.1145\/224164.224185"},{"key":"S0956796810000201_ref25","first-page":"212","volume-title":"Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation (PLDI '98), New York, NY","author":"Frigo","year":"1998"},{"key":"S0956796810000201_ref17","first-page":"236","article-title":"Using Cilk to write multiprocessor chess programs","volume":"24","author":"Dailey","year":"2002","journal-title":"J. Int. Comput. Chess Assoc."},{"key":"S0956796810000201_ref9","first-page":"213","volume-title":"Proceedings of the 1996 ACM SIGPLAN International Conference on Functional Programming, New York, NY","author":"Blelloch","year":"1996"},{"key":"S0956796810000201_ref12","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380251203"},{"key":"S0956796810000201_ref47","volume-title":"Implicit Parallel Programming in pH","author":"Nikhil","year":"2001"},{"key":"S0956796810000201_ref24","first-page":"37","volume-title":"Proceedings of the ACM SIGPLAN Workshop on Declarative Aspects of Multicore Programming, New York, NY","author":"Fluet","year":"2007"},{"key":"S0956796810000201_ref22","doi-asserted-by":"crossref","first-page":"241","DOI":"10.1145\/1411204.1411239","volume-title":"Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming, New York, NY","author":"Fluet","year":"2008"},{"key":"S0956796810000201_ref21","doi-asserted-by":"crossref","first-page":"15","DOI":"10.1145\/1292535.1292539","volume-title":"Proceedings of the 2007 ACM SIGPLAN Workshop on ML, New York, NY","author":"Fluet","year":"2007"},{"key":"S0956796810000201_ref45","doi-asserted-by":"crossref","first-page":"185","DOI":"10.1145\/91556.91631","volume-title":"Conference Record of the 1990 ACM Conference on Lisp and Functional Programming. New York, NY","author":"Mohr","year":"1990"},{"key":"S0956796810000201_ref13","doi-asserted-by":"publisher","DOI":"10.1145\/1015706.1015800"},{"key":"S0956796810000201_ref7","doi-asserted-by":"publisher","DOI":"10.1145\/227234.227246"},{"key":"S0956796810000201_ref27","doi-asserted-by":"publisher","DOI":"10.1109\/AISPAS.1997.581640"},{"key":"S0956796810000201_ref30","doi-asserted-by":"publisher","DOI":"10.1145\/4472.4478"},{"key":"S0956796810000201_ref5","unstructured":"Barton R. , Adkins D. , Prokop H. , Frigo M. , Joerg C. , Renard M. , Dailey D. & Leiserson C. (1998) Cilk Pousse. Viewed on March 20, 2008 at 2:45 PM."},{"key":"S0956796810000201_ref42","doi-asserted-by":"crossref","DOI":"10.7551\/mitpress\/2319.001.0001","volume-title":"The Definition of Standard ML (revised)","author":"Milner","year":"1997"},{"key":"S0956796810000201_ref23","doi-asserted-by":"crossref","first-page":"119","DOI":"10.1145\/1411204.1411224","volume-title":"Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming, New York, NY","author":"Fluet","year":"2008"},{"key":"S0956796810000201_ref26","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511546846"},{"key":"S0956796810000201_ref8","doi-asserted-by":"publisher","DOI":"10.1006\/jpdc.1994.1038"},{"key":"S0956796810000201_ref44","doi-asserted-by":"publisher","DOI":"10.1145\/1011508.1011509"},{"key":"S0956796810000201_ref28","unstructured":"GHC. (November 1998) The Glasgow Haskell Compiler [online]. Available at: http:\/\/www.haskell.org\/ghc Accessed 10 December 2010."},{"key":"S0956796810000201_ref58","doi-asserted-by":"publisher","DOI":"10.1145\/1168917.1168898"},{"key":"S0956796810000201_ref55","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511574962"},{"key":"S0956796810000201_ref15","first-page":"524","volume-title":"Proceedings of the 7th International Euro-Par Conference on Parallel Computing, New York, NY","author":"Chakravarty","year":"2001"},{"key":"S0956796810000201_ref34","unstructured":"Hedqvist P. (June 1998) A Parallel and Multithreaded ERLANG Implementation. MPhil thesis, Computer Science Department, Uppsala University, Uppsala, Sweden."},{"key":"S0956796810000201_ref39","first-page":"920","volume-title":"International Conference on Computational Science (ICCS '06)","author":"Leshchinskiy","year":"2006"},{"key":"S0956796810000201_ref54","first-page":"293","volume-title":"Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation (PLDI '91), New York, NY","author":"Reppy","year":"1991"},{"key":"S0956796810000201_ref10","first-page":"207","volume-title":"Cilk: An efficient multithreaded runtime system","author":"Blumofe","year":"1995"},{"key":"S0956796810000201_ref56","unstructured":"Shaw A. (July 2007). Data Parallelism in Manticore [online]. MPhil thesis, University of Chicago. Available at: http:\/\/manticore.cs.uchicago.edu Accessed 10 December 2010."},{"key":"S0956796810000201_ref19","first-page":"137","volume-title":"Proceedings of the Sixth Symposium on Operating Systems Design and Implementation (OSDI '04), Berkely, CA","author":"Dean","year":"2004"},{"key":"S0956796810000201_ref52","unstructured":"Rainey M. (August 2010) Effective Scheduling Techniques for High-Level Parallel Programming Languages [online]. PhD thesis, University of Chicago. Available at: http:\/\/manticore.cs.uchicago.edu Accessed 10 December 2010."},{"key":"S0956796810000201_ref14","doi-asserted-by":"publisher","DOI":"10.1145\/351240.351249"},{"key":"S0956796810000201_ref37","first-page":"205","volume-title":"Proceedings of the Third International Workshop on High-Level Concurrent Languages (HLCL '98)","author":"Le Fessant","year":"1998"},{"key":"S0956796810000201_ref38","doi-asserted-by":"publisher","DOI":"10.1145\/349214.349230"},{"key":"S0956796810000201_ref32","first-page":"48","volume-title":"Proceedings of the 2005 ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, New York, NY","author":"Harris","year":"2005"},{"key":"S0956796810000201_ref53","doi-asserted-by":"crossref","first-page":"257","DOI":"10.1145\/1596550.1596588","volume-title":"Proceedings of the 14th ACM SIGPLAN International Conference on Functional Programming, New York, NY","author":"Reppy","year":"2009"},{"key":"S0956796810000201_ref51","first-page":"227","article-title":"Interpreting the data: Parallel analysis with sawzall","volume":"13","author":"Pike","year":"2005","journal-title":"Sci. Program. J."},{"key":"S0956796810000201_ref46","volume-title":"ID Language Reference Manual","author":"Nikhil","year":"1991"},{"key":"S0956796810000201_ref3","doi-asserted-by":"crossref","unstructured":"Arora N. S. , Blumofe R. D. & Plaxton C. G. (1998) Thread Scheduling for Multiprogrammed Multiprocessors.","DOI":"10.1145\/277651.277678"},{"key":"S0956796810000201_ref41","doi-asserted-by":"publisher","DOI":"10.1016\/S0049-237X(08)72018-4"},{"key":"S0956796810000201_ref16","first-page":"10","volume-title":"Proceedings of the ACM SIGPLAN Workshop on Declarative Aspects of Multicore Programming, New York, NY","author":"Chakravarty","year":"2007"},{"key":"S0956796810000201_ref31","volume-title":"Parallel SML: A Functional Language and its Implementation in Dactl","author":"Hammond","year":"1991"},{"key":"S0956796810000201_ref57","volume-title":"Proceedings of the 20th ACM Annual Symposium on Parallel Algorithms and Architectures, New York, NY","author":"Spoonhower","year":"2008"},{"key":"S0956796810000201_ref50","doi-asserted-by":"crossref","first-page":"25","DOI":"10.1145\/301618.301637","volume-title":"Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation (PLDI '99), New York, NY","author":"Peyton","year":"1999"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796810000201","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:36:00Z","timestamp":1779834960000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796810000201\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2010,11]]},"references-count":61,"journal-issue":{"issue":"5-6","published-print":{"date-parts":[[2010,11]]}},"alternative-id":["S0956796810000201"],"URL":"https:\/\/doi.org\/10.1017\/s0956796810000201","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2010,11]]}}}