Skip to main content

Standard ML of New Jersey

  • Invited Lecture
  • Conference paper
  • First Online:
Programming Language Implementation and Logic Programming (PLILP 1991)

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

Abstract

The Standard ML of New Jersey compiler has been under development for five years now. We have developed a robust and complete environment for Standard ML that supports the implementation of large software systems and generates efficient code. The compiler has also served as a laboratory for developing novel implementation techniques for a sophisticated type and module system, continuation based code generation, efficient pattern matching, and concurrent programming features.

Supported in part by NSF grant CCR-9002786.

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. Andrew W. Appel. Runtime tags aren't necessary. Lisp and Symbolic Computation, 2:153–162, 1989.

    Google Scholar 

  2. Andrew W. Appel. Simple generational garbage collection and fast allocation. Software—Practice and Experience, 19(2):171–183, 1989.

    Google Scholar 

  3. Andrew W. Appel. A runtime system. Lisp and Symbolic Computation, 3(343–380), 1990.

    Google Scholar 

  4. Andrew W. Appel. Compiling with Continuations. Cambridge University Press, 1992.

    Google Scholar 

  5. Andrew W. Appel and Trevor Jim. Continuation-passing, closure-passing style. In Sixteenth ACM Symp. on Principles of Programming Languages, pages 293–302, 1989.

    Google Scholar 

  6. Andrew W. Appel and Trevor T. Y. Jim. Optimizing closure environment representations. Technical Report 168, Dept. of Computer Science, Princeton University, 1988.

    Google Scholar 

  7. Andrew W. Appel and David B. MacQueen. A Standard ML compiler. In Gilles Kahn, editor, Functional Programming Languages and Computer Architecture (LNCS 274), pages 301–324. Springer-Verlag, 1987.

    Google Scholar 

  8. Andrew W. Appel, James S. Mattson, and David R. Tarditi. A lexical analyzer generator for Standard ML. distributed with Standard ML of New Jersey, December 1989.

    Google Scholar 

  9. Andrew W. Appel and Zhong Shao. Callee-save registers in continuation-passing style. Technical Report CS-TR-326-91, Princeton Univ. Dept. of Computer Science, Princeton, NJ, June 1991.

    Google Scholar 

  10. David Berry. SML resources. sent to the SML mailing list by db@lfcs.ed.ac.uk, May 1991.

    Google Scholar 

  11. CAML: The reference manual (version 2.3). Projet Formel, INRIA-ENS, June 1987.

    Google Scholar 

  12. 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, December 1990.

    Google Scholar 

  13. N. G. deBruijn. Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation. Indag. Math., 34:381–392, 1972.

    Google Scholar 

  14. Bruce Duba, Robert Harper, and David MacQueen. Typing first-class continuations in ML. In Eighteenth Annual ACM Symp. on Principles of Prog. Languages, pages 163–173, Jan 1991.

    Google Scholar 

  15. Carl A. Gunter, Elsa L. Gunter, and David B. MacQueen. An abstract interpretation for ML equality kinds. In Theoretical Aspects of Computer Software. Springer, September 1991.

    Google Scholar 

  16. S. C. Johnson. Yacc — yet another compiler compiler. Technical Report CSTR-32, AT&T Bell Laboratories, Murray Hill, NJ, 1975.

    Google Scholar 

  17. James William O'Toole Jr. Type abstraction rules for references: A comparison of four which have achieved noteriety. Technical Report 380, MIT Lab. for Computer Science, 1990.

    Google Scholar 

  18. David Kranz. ORBIT: An optimizing compiler for Scheme. PhD thesis, Yale University, 1987.

    Google Scholar 

  19. P. J. Landin. The mechanical evaluation of expressions. Computer J., 6(4):308–320, 1964.

    Google Scholar 

  20. Xavier Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report No. 117, INRIA, February 1990.

    Google Scholar 

  21. Xavier Leroy. INRIA, personal communication, 1991.

    Google Scholar 

  22. Xavier Leroy and Pierre Weis. Polymorphic type inference and assignment. In Eighteenth Annual ACM Symp. on Principles of Prog. Languages, Jan 1991.

    Google Scholar 

  23. David B. MacQueen. The implementation of Standard ML modules. In ACM Conf. on Lisp and Functional Programming, pages 212–223, 1988.

    Google Scholar 

  24. David C. J. Matthews. Papers on Poly/ML. Technical Report T.R. No. 161, Computer Laboratory, University of Cambridge, February 1989.

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  27. John H. Reppy. Asynchronous signals in Standard ML. Technical Report TR 90-1144, Cornell University, Dept. of Computer Science, Ithaca, NY, 1990.

    Google Scholar 

  28. John H. Reppy. Concurrent programming with events. Technical report, Cornell University, Dept. of Computer Science, Ithaca, NY, 1990.

    Google Scholar 

  29. John H. Reppy and Emden R. Gansner. The eXene library manual. Cornell Univ. Dept. of Computer Science, March 1991.

    Google Scholar 

  30. Guy L. Steele. Rabbit: a compiler for Scheme. Technical Report AI-TR-474, MIT, 1978.

    Google Scholar 

  31. David R. Tarditi, Anurag Acharya, and Peter Lee. No assembly required: Compiling Standard ML to C. Technical Report CMU-CS-90-187, Carnegie Mellon Univ., November 1990.

    Google Scholar 

  32. David R. Tarditi and Andrew W. Appel. ML-Yacc, version 2.0. distributed with Standard ML of New Jersey, April 1990.

    Google Scholar 

  33. Mads Tofte. Operational Semantics and Polymorphic Type Inference. PhD thesis, Edinburgh University, 1988. CST-52-88.

    Google Scholar 

  34. Mads Tofte. Type inference for polymorphic references. Information and Computation, 89:1–34, November 1990.

    Google Scholar 

  35. Andrew P. Tolmach and Andrew W. Appel. Debugging Standard ML without reverse engineering. In Proc. 1990 ACM Conf. on Lisp and Functional Programming, pages 1–12, June 1990.

    Google Scholar 

  36. Philip Wadler and Stephen Blott. How to make ad-hoc polymorphism less ad hoc. In Sixteenth Annual ACM Symp. on Principles of Prog. Languages, pages 60–76, Jan 1989.

    Google Scholar 

  37. Mitchell Wand. Continuation-based multiprocessing. In Conf. Record of the 1980 Lisp Conf., pages 19–28, August 1980.

    Google Scholar 

  38. Andrew K. Wright and Matthias Felleisen. A syntactic approach to type soundness. Technical Report COMP TR91-160, Rice University, April 1991.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Jan Maluszyński Martin Wirsing

Rights and permissions

Reprints and permissions

Copyright information

© 1991 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Appel, A.W., MacQueen, D.B. (1991). Standard ML of New Jersey. In: Maluszyński, J., Wirsing, M. (eds) Programming Language Implementation and Logic Programming. PLILP 1991. Lecture Notes in Computer Science, vol 528. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-54444-5_83

Download citation

  • DOI: https://doi.org/10.1007/3-540-54444-5_83

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-54444-9

  • Online ISBN: 978-3-540-38362-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics