Hostname: page-component-8448b6f56d-wq2xx Total loading time: 0 Render date: 2024-04-18T10:24:49.947Z Has data issue: false hasContentIssue false

A critique of Standard ML

Published online by Cambridge University Press:  07 November 2008

Andrew W. Appel
Affiliation:
Princeton University, NJ, USA
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

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.

Type
Articles
Copyright
Copyright © Cambridge University Press 1993

References

Military standard: Ada programming language (1980) Technical Report MIL-STD-1815, Department of Defense, Naval Publications and Forms Center, Philadelphia, PA.Google Scholar
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.CrossRefGoogle Scholar
Appel, A.W. (1989) Runtime tags aren't necessary. Lisp and Symbolic Computation, 2:153162.CrossRefGoogle Scholar
Appel, A.W. (1992) Compiling with Continuations. Cambridge University Press.Google Scholar
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.CrossRefGoogle Scholar
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-VerlagGoogle Scholar
Cardelli, L. (1984) Compiling a functional language. Symposium on LISP and Functional Programming, pp. 208217. ACM Press.Google Scholar
Clinger, W. and Hansen, L.T. (1992) Is explicit deallocation really faster than garbage collection? unpublished manuscript, University of Oregon.Google Scholar
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.Google Scholar
Damas, L. (1985) Type Assignment in Programming Languages. PhD thesis, Department of Computer Science, University of Edinburgh.Google Scholar
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.Google Scholar
Gordon, M.J., Milner, A.J. and Wadsworth, C.P. (1979) Edinburgh LCF. Springer-Verlag.CrossRefGoogle Scholar
Hoare, C.A.R. (1973) Hints on Programming-Language Design, pp. 193216. Prentice Hall, 1989. Keynote address to the ACM SIGPLAN conference in 1973.Google Scholar
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.Google Scholar
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.CrossRefGoogle Scholar
Jensen, K. and Wirth, N. (1974) Pascal: User Manual and Report. Springer-Verlag.CrossRefGoogle Scholar
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.Google Scholar
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.CrossRefGoogle Scholar
Kernighan, B.W. and Ritchie, D.M. (1978) The C Programming Language. Prentice Hall.Google Scholar
Koenig, A. (1989) C Traps and Pitfalls. Addison-Wesley.Google Scholar
Leroy, X. (1992) Unboxed objects and polymorphic typing. In Nineteenth Annual ACM Symp. on Principles of Prog. Languages, pp. 177188, 01. ACM Press.Google Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
Leiberman, H. and Hewitt, C. (1983) A real-time garbage collector based on the lifetimes of objects. Communications of the ACM, 26(6):419429.CrossRefGoogle Scholar
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.Google Scholar
MacQueen, D. (1984) Modules for Standard ML. in Proc. 1984 ACM Conf. on Lisp and Functional Programming, pp. 198207. ACM Press.Google Scholar
MacQueen, D. (1988) weak-types. Distributed with Standard ML of New Jersey.Google Scholar
Milner, R. (1978) A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17:348375.CrossRefGoogle Scholar
Milner, R. (1984) A proposal for Standard ML. In ACM Symposium on LISP and Functional Programming, pp. 184197. ACM Press.Google Scholar
Milner, R. and Tofte, M. (1991) Commentary on Standard ML. MIT Press.Google Scholar
Milner, R., Tofte, M. and Harper, R. (1989) The Definition of Standard ML. MIT Press.Google Scholar
Nelson, G., editor (1991) Systems Programming with Modula-3. Prentice Hall.Google Scholar
Nettles, S. and O'Toole, J.W. (1990) Carnegie Melon Univ., PA, personal communication from Scott Nettles.Google Scholar
Rees, J. and Clinger, W. (1986) Revised report on the algorithmic language Scheme. SIGPLAN Notices, 21(12):3779.CrossRefGoogle Scholar
Reppy, J.H. (1990) Concurrent programming with events. Technical Report, Cornell University, Dept. of Computer Science, Ithaca, NY.Google Scholar
Reppy, J.H. and Gansner, E.R. (1991) The eXene library manual. Cornell Univ. Dept of Computer Science, March.Google Scholar
Runciman, C. and Wakeling, D. (1993) Heap profiling of lazy functional programs. Journal of Functional Programming, 3(2):217245.CrossRefGoogle Scholar
Shao, Z. and Appel, A. (1992) Smartest recompilation. Technical Report CS-TR-395-92, Princeton University.Google Scholar
Shao, Z. and Appel, A. (1993) Smartest recompilation. In Proc. Twentieth Annual ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages. ACM Press.Google Scholar
Shaw, R.A. (1987) Improving garbage collector performance in virtual memory. Technical report CSL-TR-87-323, Stanford University, Palo Alto, CA.Google Scholar
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.Google Scholar
Tofte, M. (1990) Type inference for polymorphic references. Information and Computation, 89:134, 11.CrossRefGoogle Scholar
Ungar, D.M. (1986) The Design and Evaluation of a High Performance Smalltalk System. MIT Press.Google Scholar
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.Google Scholar
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.Google Scholar
Wand, M. (1980) Continuation-based multiprocessing. In Conf. Record of the 1980 Lisp Conf., pp. 1928. 08. ACM Press.Google Scholar
Welsh, J., Sneeringer, W.J. and Hoare, C.A.R. (1977) Ambiguities and insecurities in Pascal. Software-Practice and Experience, 7(6):685696.CrossRefGoogle Scholar
Wirth, N. (1981) Programming in Modula-2. Springer-Verlag.Google Scholar
Wright, A.K. (1992) Polymorphic references for mere mortals. In Proceedings of the European Symposium on Programming.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.