Standard ML of New Jersey

  • Andrew W. Appel
  • David B. MacQueen
Invited Lecture
Part of the Lecture Notes in Computer Science book series (LNCS, volume 528)


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.


Free Variable Garbage Collection Runtime System Semantic Action Type Constructor 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Andrew W. Appel. Runtime tags aren't necessary. Lisp and Symbolic Computation, 2:153–162, 1989.Google Scholar
  2. [2]
    Andrew W. Appel. Simple generational garbage collection and fast allocation. Software—Practice and Experience, 19(2):171–183, 1989.Google Scholar
  3. [3]
    Andrew W. Appel. A runtime system. Lisp and Symbolic Computation, 3(343–380), 1990.Google Scholar
  4. [4]
    Andrew W. Appel. Compiling with Continuations. Cambridge University Press, 1992.Google Scholar
  5. [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. [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. [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. [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. [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. [10]
    David Berry. SML resources. sent to the SML mailing list by, May 1991.Google Scholar
  11. [11]
    CAML: The reference manual (version 2.3). Projet Formel, INRIA-ENS, June 1987.Google Scholar
  12. [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. [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. [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. [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. [16]
    S. C. Johnson. Yacc — yet another compiler compiler. Technical Report CSTR-32, AT&T Bell Laboratories, Murray Hill, NJ, 1975.Google Scholar
  17. [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. [18]
    David Kranz. ORBIT: An optimizing compiler for Scheme. PhD thesis, Yale University, 1987.Google Scholar
  19. [19]
    P. J. Landin. The mechanical evaluation of expressions. Computer J., 6(4):308–320, 1964.Google Scholar
  20. [20]
    Xavier Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report No. 117, INRIA, February 1990.Google Scholar
  21. [21]
    Xavier Leroy. INRIA, personal communication, 1991.Google Scholar
  22. [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. [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. [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. [25]
    Robin Milner and Mads Tofte. Commentary on Standard ML. MIT Press, Cambridge, Massachusetts, 1991.Google Scholar
  26. [26]
    Robin Milner, Mads Tofte, and Robert Harper. The Definition of Standard ML. MIT Press, Cambridge, Mass., 1989.Google Scholar
  27. [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. [28]
    John H. Reppy. Concurrent programming with events. Technical report, Cornell University, Dept. of Computer Science, Ithaca, NY, 1990.Google Scholar
  29. [29]
    John H. Reppy and Emden R. Gansner. The eXene library manual. Cornell Univ. Dept. of Computer Science, March 1991.Google Scholar
  30. [30]
    Guy L. Steele. Rabbit: a compiler for Scheme. Technical Report AI-TR-474, MIT, 1978.Google Scholar
  31. [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. [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. [33]
    Mads Tofte. Operational Semantics and Polymorphic Type Inference. PhD thesis, Edinburgh University, 1988. CST-52-88.Google Scholar
  34. [34]
    Mads Tofte. Type inference for polymorphic references. Information and Computation, 89:1–34, November 1990.Google Scholar
  35. [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. [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. [37]
    Mitchell Wand. Continuation-based multiprocessing. In Conf. Record of the 1980 Lisp Conf., pages 19–28, August 1980.Google Scholar
  38. [38]
    Andrew K. Wright and Matthias Felleisen. A syntactic approach to type soundness. Technical Report COMP TR91-160, Rice University, April 1991.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1991

Authors and Affiliations

  • Andrew W. Appel
    • 1
  • David B. MacQueen
    • 2
  1. 1.Princeton UniversityUSA
  2. 2.AT&T Bell LaboratoriesUSA

Personalised recommendations