Skip to main content Accessibility help
×
×
Home

A critique of Standard ML

  • Andrew W. Appel (a1)
Abstract

Standard ML is an excellent language for many kinds of programming. It is safe, efficient, suitably abstract, and concise. There are many aspects of the language that work well.

However, nothing is perfect: Standard ML has a few shortcomings. In some cases there are obvious solutions, and in other cases further research is required.

Copyright
References
Hide All
Military standard: Ada programming language (1980) Technical Report MIL-STD-1815, Department of Defense, Naval Publications and Forms Center, Philadelphia, PA.
Anderson, T.E., Bershad, B.N., Lazowska, E.D. and Levy, H.M. (1992) Scheduler activations: Effective kernel support for the user-level management of parallelism. ACM Trans. on Computer Systems, 10(1):5379, 02.
Appel, A.W. (1989) Runtime tags aren't necessary. Lisp and Symbolic Computation, 2:153162.
Appel, A.W. (1992) Compiling with Continuations. Cambridge University Press.
Appel, A.W. and MacQueen, D.B. (1987) A Standard ML compiler. In Kahn, G., editor, Functional Programming Languages and Computer Architecture (LNCS 274), pp. 301324. Springer-Verlag.
Appel, A.W. and MacQueen, D.B. (1991) Standard ML of New Jersey. In Wirsing, M., editor, Third International Symp. on Prog. Lang. Implementation and Logic Programming, pp. 113, 08. Springer-Verlag
Cardelli, L. (1984) Compiling a functional language. Symposium on LISP and Functional Programming, pp. 208217. ACM Press.
Clinger, W. and Hansen, L.T. (1992) Is explicit deallocation really faster than garbage collection? unpublished manuscript, University of Oregon.
Cooper, E.C. and Morrisett, J.G. (1990) Adding threads to Standard ML. Technical Report CMU-CS-90-186, School of Computer Science, Carnegie Mellon University, Pittsburgh, PA, 12.
Damas, L. (1985) Type Assignment in Programming Languages. PhD thesis, Department of Computer Science, University of Edinburgh.
Duba, B., Harper, R. and MacQueen, D. (1991) Typing first-class continuations in ML. Eighteenth Annual ACM Symp. on Principles of Prog. Languages, pp. 163173, 01. ACM Press.
Gordon, M.J., Milner, A.J. and Wadsworth, C.P. (1979) Edinburgh LCF. Springer-Verlag.
Hoare, C.A.R. (1973) Hints on Programming-Language Design, pp. 193216. Prentice Hall, 1989. Keynote address to the ACM SIGPLAN conference in 1973.
Hudak, P.Peyton Jones, S. and Wadler, P. (1991) Report on the programming language Haskell: Version 1.1. Technical Report, Yale University and Glasgow University, 08.
Hudak, P.Peyton Jones, S. and Wadler, P. (1992) Report on the programming language Haskell, a non-strict, purely functional language, version 1.2. SIGPLAN Notices, 27(5), 05.
Jensen, K. and Wirth, N. (1974) Pascal: User Manual and Report. Springer-Verlag.
Jouvelot, P. and Gifford, D.K. (1991) Algebraic reconstruction of types and effects. Eighteenth Annual ACM Symp. on Principles of Prog. Languages, pp. 303310, 01. ACM Press.
Kaes, S. (1992) Type inference in the presence of overloading, subtyping and recursive types. Proc. 1992 ACM Conf. on Lisp and Functional Programming, pp. 193204. ACM Press.
Kernighan, B.W. and Ritchie, D.M. (1978) The C Programming Language. Prentice Hall.
Koenig, A. (1989) C Traps and Pitfalls. Addison-Wesley.
Leroy, X. (1992) Unboxed objects and polymorphic typing. In Nineteenth Annual ACM Symp. on Principles of Prog. Languages, pp. 177188, 01. ACM Press.
Leroy, X. and Mauny, M. (1991) Dynamics in ML. In Hughes, J., editor, Functional Programming Languages and Computer Architecture: 5th ACM Conference (LNCS 523), pp. 406426. Springer-Verlag.
Leroy, X. and Weis, P. (1991) Polymorphic type inference and assignment. In Eighteenth Annual ACM Symp. on Principles of Prog. Languages, pp. 291302, 01. ACM Press.
Leiberman, H. and Hewitt, C. (1983) A real-time garbage collector based on the lifetimes of objects. Communications of the ACM, 26(6):419429.
Lucassen, J.M. and Gifford, D.K. (1988) Polymorphic effect systems. In Fifthteenth Anuual ACM Symp. on Principles of Prog. Languages, pp. 4757, 01. ACM Press.
MacQueen, D. (1984) Modules for Standard ML. in Proc. 1984 ACM Conf. on Lisp and Functional Programming, pp. 198207. ACM Press.
MacQueen, D. (1988) weak-types. Distributed with Standard ML of New Jersey.
Milner, R. (1978) A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17:348375.
Milner, R. (1984) A proposal for Standard ML. In ACM Symposium on LISP and Functional Programming, pp. 184197. ACM Press.
Milner, R. and Tofte, M. (1991) Commentary on Standard ML. MIT Press.
Milner, R., Tofte, M. and Harper, R. (1989) The Definition of Standard ML. MIT Press.
Nelson, G., editor (1991) Systems Programming with Modula-3. Prentice Hall.
Nettles, S. and O'Toole, J.W. (1990) Carnegie Melon Univ., PA, personal communication from Scott Nettles.
Rees, J. and Clinger, W. (1986) Revised report on the algorithmic language Scheme. SIGPLAN Notices, 21(12):3779.
Reppy, J.H. (1990) Concurrent programming with events. Technical Report, Cornell University, Dept. of Computer Science, Ithaca, NY.
Reppy, J.H. and Gansner, E.R. (1991) The eXene library manual. Cornell Univ. Dept of Computer Science, March.
Runciman, C. and Wakeling, D. (1993) Heap profiling of lazy functional programs. Journal of Functional Programming, 3(2):217245.
Shao, Z. and Appel, A. (1992) Smartest recompilation. Technical Report CS-TR-395-92, Princeton University.
Shao, Z. and Appel, A. (1993) Smartest recompilation. In Proc. Twentieth Annual ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages. ACM Press.
Shaw, R.A. (1987) Improving garbage collector performance in virtual memory. Technical report CSL-TR-87-323, Stanford University, Palo Alto, CA.
Talpin, J.P. and Jouvelot, P. (1991) Polymorphic type, region, and effect inference. Technical Report EMP-CRI E/150, Ecole des Mines de Paris, February.
Tofte, M. (1990) Type inference for polymorphic references. Information and Computation, 89:134, 11.
Ungar, D.M. (1986) The Design and Evaluation of a High Performance Smalltalk System. MIT Press.
Wadler, P. (1992) The essence of functional programming (invited talk). In Nineteenth Annual ACM Symp. on Principles of Prog. Languages, pp. 114. 01. ACM Press.
Wadler, P. and Blott, S. (1989) How to make ad-hoc polymorphism less ad-hoc. In Sixteenth Annual ACM Symp. on Principles of Prog. Languages, pp. 6076. 01. ACM Press.
Wand, M. (1980) Continuation-based multiprocessing. In Conf. Record of the 1980 Lisp Conf., pp. 1928. 08. ACM Press.
Welsh, J., Sneeringer, W.J. and Hoare, C.A.R. (1977) Ambiguities and insecurities in Pascal. Software-Practice and Experience, 7(6):685696.
Wirth, N. (1981) Programming in Modula-2. Springer-Verlag.
Wright, A.K. (1992) Polymorphic references for mere mortals. In Proceedings of the European Symposium on Programming.
Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *
×

Metrics

Full text views

Total number of HTML views: 0
Total number of PDF views: 0 *
Loading metrics...

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed

A critique of Standard ML

  • Andrew W. Appel (a1)
Submit a response

Discussions

No Discussions have been published for this article.

×

Reply to: Submit a response


Your details


Conflicting interests

Do you have any conflicting interests? *