Skip to main content

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 693))

Abstract

Standard ML is one of a number of new programming languages developed in the 1980s that are seen as suitable vehicles for serious systems and applications programming. It offers an excellent ratio of expressiveness to language complexity, and provides competitive efficiency. Because of its type and module system, Standard ML manages to combine safety, security, and robustness with much of the flexibility of dynamically typed languages like Lisp. It is also has the most well-developed scientific foundation of any major language. Here I review the strengths and weaknesses of Standard ML and describe some of what we have learned through the design, implementation, and use of the language.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Alfred V. Aho, Brian W. Kernighan, and Peter J. Weinberger. The AWK Programming Language. Addison-Wesley, Reading, Massachusetts, 1988.

    Google Scholar 

  2. William E. Aitken and John H. Reppy. Abstract value constructors: symbolic constants for Standard ML. Technical Report TR 92–1290, Dept. of Computer Science, Cornell Univ., June 1992.

    Google Scholar 

  3. Andrew W. Appel. A critique of Standard ML. Journal of Functional Programming, 1993. In press.

    Google Scholar 

  4. Andrew W. Appel and David B. MacQueen. Standard ML of New Jersey. In Martin Wirsing, editor, Third Int'l Symp. on Prog. Lang. Implementation and Logic Programming, pages 1–13, New York, August 1991. Springer-Verlag.

    Google Scholar 

  5. D. W. Barron, J. N. Buxton, D. F. Hartley, F. Nixon, and C. S. Strachey. The main features of CPL. Computer Journal, 6:134–143, 1963.

    Google Scholar 

  6. Dave Berry. Lessons from the design of a Standard ML library. Journal of Functional Programming, 1993. In press.

    Google Scholar 

  7. R. M. Burstall, J. S. Collins, and R. J. Popplestone. Programming in POP-2. Edinburgh University Press, 1977.

    Google Scholar 

  8. Rod Burstall. Computer assisted proof for mathematics: an introduction, using the LEGO proof system. In Proc. of the Institute of Applied Math. Conf. on the Revolution in Mathematics caused by Computing, 1989.

    Google Scholar 

  9. The CAML Reference Manual (Version 2.6). Projet Formel, INRIA-ENS, March 1989.

    Google Scholar 

  10. Luca Cardelli. A semantics of multiple inheritance. Information and Computation, 76:138–164, 1988.

    Google Scholar 

  11. Rance Cleaveland. The concurrency workbench, 1993. In this volume.

    Google Scholar 

  12. Rance Cleaveland, Joachim Parrow, and Bernhard Steffen. The concurrency work-bench: a semantics-based tool for the verification of concurrent systems. ACM TOPLAS, 15(1):36–72, January 1993.

    Google Scholar 

  13. Eric C. Cooper and J. Gregory Morrisett. Adding threads to Standard ML. Technical Report CMU-CS-90-186, School of Computer Science, Carnegie Mellon University, Pittsburgh, PA, December 1990.

    Google Scholar 

  14. Robert Cooper and Clifford Krumvieda. Distributed programming with asynchronous ordered channels in Distributed ML. In Peter Lee, editor, Proc. of ACM SIGPLAN Workshop on ML and its Applications, pages 134–148, June 1992.

    Google Scholar 

  15. Pierre Crégut. Extensions to the SML module system. Rapport de Stage d'Ingenieur Eleve des Telecommunications, November 1992.

    Google Scholar 

  16. Bruce Duba, Robert Harper, and David MacQueen. Typing first-class continuations in ML. Journal of Functional Programming, 1993. In press.

    Google Scholar 

  17. Karen Frenkel. An interview with Robin Milner. Comm. of the ACM, 36(1):90–97, January 1993.

    Google Scholar 

  18. Alessandro Giacalone, Prateek Mishra, and Sanjiva Prasad. FACILE: A symmetric integration of concurrent and functional programming. International Journal of Parallel Programming, 18(2):121–160, April 1989.

    Google Scholar 

  19. M. J. C. Gordon, A. J. R. G. Milner, L. Morris, M. C. Newey, and C. P. Wadsworth. A metalanguage for interactive proof in LCF. In Proc. 5th ACM Symp. on Principles of Programming Languages, New York, 1978. ACM Press.

    Google Scholar 

  20. C. A. Gunter, E. L. Gunter, and D. B. MacQueen. Using abstract interpretation to compute ML equality kinds. Information and Computation, 1993. In press.

    Google Scholar 

  21. C. A. Gunter and J. C. Mitchell. Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design. The MIT Press, 1993.

    Google Scholar 

  22. C. A. Gunter and R. Rémy. A proof-theoretic assessment of runtime type errors. unpublished, 1992.

    Google Scholar 

  23. Robert Harper and Mark Lillibridge. Explicit polymorphism and CPS conversion. In Proc. 13th ACM Symp. on Principles of Programming Languages, 1993.

    Google Scholar 

  24. My Hoang, John Mitchell, and Ramesh Viswanathan. Standard ML weak polymorphism and imperative constructs. Ftp: ftp/pub/jcm/weak-poly.dvi on theory.stanford.edu, 1993.

    Google Scholar 

  25. Lorenz Huelsbergen and James R. Larus. A concurrent copying garbage collector for languages that distinguish (im)mutable data. In ACM Symp. on Principles and Practice of Parallel Programming, 1993.

    Google Scholar 

  26. P. J. Landin. The next 700 programming languages. Communications of the ACM, 9(3):157–66, 1966.

    Google Scholar 

  27. Konstantin Laufer and Martin Odersky. An extension of ML with first-class abstract types. In Peter Lee, editor, Proc. of ACM SIGPLAN Workshop on ML and its Applications, pages 78–91, June 1992.

    Google Scholar 

  28. Xavier Leroy. Unboxed objects and polymorphic typing. In Nineteenth Annual ACM Symp. on Principles of Prog. Languages, pages 177–188, New York, January 1992. ACM Press.

    Google Scholar 

  29. Xavier Leroy. Polymorphism by name for references and continuations. In Proc. 13th ACM Symp. on Principles of Programming Languages, 1993.

    Google Scholar 

  30. Xavier Leroy and Michel Mauny. Dynamics in ML. In J. Hughes, editor, Functional Programming Languages and Computer Architecture: 5th ACM Conference (LNCS 523), pages 406–426. Springer-Verlag, 1991. To appear in Journal of Functional Programming, 1993.

    Google Scholar 

  31. David B. MacQueen. Using dependent types to express modular structure. In Proc. 13th ACM Symp. on Principles of Programming Languages, pages 277–286, 1986.

    Google Scholar 

  32. Luigi V. Mancini. A technique for subclassing and its implementation exploiting polymorphic procedures. Software—Practice and Experience, 18(4):287–300, April 1988.

    Google Scholar 

  33. David C. J. Matthews. A distributed concurrent implementation of Standard ML. Technical Report ECS-LFCS-91-174, Laboratory for Foundations of Computer Science, Edinburgh University, August 1991.

    Google Scholar 

  34. Robin Milner and Mads Tofte. Commentary on Standard ML. MIT Press, Cambridge, Massachusetts, 1991.

    Google Scholar 

  35. Robin Milner, Mads Tofte, and Robert Harper. The Definition of Standard ML. MIT Press, Cambridge, MA, 1989.

    Google Scholar 

  36. John C. Mitchell and Robert Harper. The essence of ML. In Proc. 15th ACM Symp. on Principles of Prog. Languages, pages 28–46, New York, 1988. ACM Press.

    Google Scholar 

  37. John Ophel. An introduction to the high-level language Standard ML. In this volume.

    Google Scholar 

  38. Laurence C. Paulson. ML for the Working Programmer. Cambridge University Press, Cambridge, 1992.

    Google Scholar 

  39. Lawrence C. Paulson and Tobias Nipkow. Isabelle tutorial and user's manual. Technical Report Technical Report No. 19, University of Cambridge Computer Laboratory, January 1990.

    Google Scholar 

  40. John H. Reppy. Concurrent ML: design, application, and semantics, 1993. In this volume.

    Google Scholar 

  41. Eugene J. Rollins. SourceGroup: a selective-recompilation system. In Robert Harper, editor, Third International Workshop on Standard ML, September 1991.

    Google Scholar 

  42. Konrad Slind. HOL90: not just an ugly rumor! In Proc. of the 1991 Int'l. Workshop on the HOL Theorem Proving System and its Applications, 1991.

    Google Scholar 

  43. Mads Tofte. Principle signatures for higher-order program modules. In Proc. 19th ACM Symp. on Principles of Programming Languages, pages 189–199, 1992.

    Google Scholar 

  44. Mitchell Wand. Type inference for record concatenations and multiple inheritance. In Proc. of the Symp. on Logic in Computer Science, pages 92–97. IEEE, June 1989.

    Google Scholar 

  45. Andrew K. Wright. Polymorphism for imperative languages without imperative types. Ftp: public/languages/tr93-200.[dvi,ps].Z on titan.cs.rice.edu, 1993.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Peter E. Lauer

Rights and permissions

Reprints and permissions

Copyright information

© 1993 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

MacQueen, D.B. (1993). Reflections on standard ML. In: Lauer, P.E. (eds) Functional Programming, Concurrency, Simulation and Automated Reasoning. Lecture Notes in Computer Science, vol 693. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-56883-2_2

Download citation

  • DOI: https://doi.org/10.1007/3-540-56883-2_2

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-56883-4

  • Online ISBN: 978-3-540-47776-1

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics