Hostname: page-component-8448b6f56d-gtxcr Total loading time: 0 Render date: 2024-04-23T11:37:49.597Z Has data issue: false hasContentIssue false

Lessons from the design of a Standard ML library

Published online by Cambridge University Press:  07 November 2008

Dave Berry
Affiliation:
Laboratory for Foundations of Computer Science, University of Edinburgh, UK†
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.

We describe the Edinburgh SML Library and draw lessons from its development. These lessons are of two kinds. The first concerns how to use SML to write a library, and shows some of the design choices that have to be considered. Most of the paper concerns this topic. The second kind of lesson concerns ways in which the language hinders the construction of a library. We suggest some changes to the language as a result of this experience, the most important being the addition of higher-order functors. We also suggest that language designers should consider the needs of libraries early on in the design of a language.

Type
Articles
Copyright
Copyright © Cambridge University Press 1993

References

Abadi, M., Cardelli, L., Pierce, B. C., & Plotkin, G. D. (1989) (06) Dynamic typing in a statically typed language. Tech. rept. DEC SRC.CrossRefGoogle Scholar
Ada., (1989) The programming language Ada reference manual. LNCS 155, Springer-Verlag.Google Scholar
Appel, A. W. (1992) (02) A critique of Standard ML. Tech. rept. CS-TR-364–92. Princeton University.Google Scholar
Appel, A. W., Mattson, J. S., & Tarditi, D. R. (1989) (12) A lexical analyzer generator for Standard ML. Tech. rept. Princeton University.Google Scholar
Berry, D. (1991) The Edinburgh SML library. LFCS Report Series ECS-LFCS-91–148. Laboratory for Foundations of Computer Science, University of Edinburgh.Google Scholar
Blelloch, G. (1990) Vector models for data-parallel programming. MIT Press.Google Scholar
Feldman, S. I. (1979) Make - a program for maintaining computer programs. Software - practice and experience, 9, 255–65.CrossRefGoogle Scholar
Goldberg, A., & Robson, D. (1983) Smalltalk-80: The language and its implementation. Addison-Wesley.Google Scholar
Harper, R. (1986) Introduction to Standard ML. LFCS Report Series ECS-LFCS-86–14. Laboratory for Foundations of Computer Science, University of Edinburgh. Revised 1989 by Nick Rothwell and Kevin Mitchell.Google Scholar
Hudak, P., Peyton Jones, S., & Wadler, P. (editors), (1992) Report on the programming language Haskell, a non-strict purely functional language (version 1.2). ACM SIGPLAN Notices, 27(5).CrossRefGoogle Scholar
IEEE. (1985) IEEE standard for binary floating point arithmetic, ANSI/IEEE Std 754–1985.Google Scholar
Leroy, X., & Weis, P. (1991) (Jan) Polymorphic type inference and assignment. Pages 291–302 of: Proceedings of the eighteenth ACM symposium on principles of programming languages.CrossRefGoogle Scholar
Meyer, B. (1990) Lessons from the design of the Eiffel libraries. Communications of the ACM, 33(9), 6888.CrossRefGoogle Scholar
Meyer, B. (1991) Eiffel: The language. Prentice-Hall.Google Scholar
Milner, R., & Tofte, M. (1991) Commentary on Standard ML. MIT.Google Scholar
Milner, R., Tofte, M., & Harper, R. (1990) The definition of Standard ML. MIT.Google Scholar
Paulson, L. C. (1991) ML for the working programmer. Cambridge University Press.Google Scholar
Rittri, M. (1991) Using types as search keys in function libraries. Journal of functional programming, 1(1), 7190.CrossRefGoogle Scholar
Runciman, C., & Toyn, I. (1991) Retrieving reusable software components by polymorphic type. Journal of functional programming, 1(2), 191212.CrossRefGoogle Scholar
Sannella, D. (1991) Formal program development in Extended ML for the working programmer. Pages 99–130 of: Proc. 3rd bcs/facs workshop on refinement, hursley park. Springer Workshops in Computing.Google Scholar
Tarditi, D. R., & Appel, A. W. (1991) (Mar) ML-Yacc. Tech. rept. Princeton University.Google Scholar
Tofte, M. (1989) (March) Four lectures on Standard ML. LFCS Report Series ECS-LFCS-89–73. Laboratory for Foundations of Computer Science, University of Edinburgh.Google Scholar
Tofte, M. (1992) (Jan) Principal signatures for higher-order ML functors. Pages 189–199 of: Proceedings of the nineteenth ACM symposium on principles of programming languages.Google Scholar
Wadler, P., & Blott, S. (1989) (Jan) How to make ad-hoc polymorphism less ad-hoc. Pages 60–76 of: Proceedings of the sixteenth ACM symposium on principles of programming languages.CrossRefGoogle Scholar
Wichmann, B., Schaffert, C., Payne, M., & Jaffe, M. (1990) (Dec) Language compatible arithmetic standard, version 3.0. Dfraft ISO/ANSI Standard. ISO Doc. No. ISO/IEC JTC1/SC22/WG11/N212. Ansi Doc. No. X3T2/91–006.Google Scholar
Wright, A. K. (1992) Typing references by effect inference. In: European symposium on programming. Springer-Verlag Lecture Notes in Computer Science.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.