skip to main content
10.1145/1013963.1013987acmconferencesArticle/Chapter ViewAbstractPublication PagesppdpConference Proceedingsconference-collections
Article

Adventures in interoperability: the SML.NET experience

Published:24 August 2004Publication History

ABSTRACT

SML.NET is a compiler for Standard ML that targets the Common Language Runtime and is integrated into the Visual Studio development environment. It supports easy interoperability with other .NET languages via a number of language extensions, which go considerably beyond those of our earlier compiler, MLj.This paper describes the new language extensions and the features of the Visual Studio plugin, including syntax highlighting, Intellisense, continuous type inference and debugger support. We discuss our experiences using SML.NET to write SML programs that interoperate with other .NET languages, libraries and frameworks. Examples include the Visual Studio plugin itself (written in SML.NET, using .NET's COM interop features to integrate in a C++ application) and writing ASP.NET and Pocket PC applications in SML.

References

  1. The MLton Compiler. http://www.mlton.org/.Google ScholarGoogle Scholar
  2. The SML.NET Compiler. http://www.cl.cam.ac.uk/Research/TSG/SMLNET/.Google ScholarGoogle Scholar
  3. Visual Studio Industry Partner Programme. http://msdn.microsoft.com/vstudio/extend/.Google ScholarGoogle Scholar
  4. N. Benton and A. Kennedy. Interlanguage working without tears: Blending SML with Java. In 4th ACM SIGPLAN International Conference on Functional Programming, Paris, France, September 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. N. Benton, A. Kennedy, and C. Russo. The SML.NET 1.1 user guide. http://www.cl.cam.ac.uk/Research/TSG/SMLNET/smlnet.pdf.Google ScholarGoogle Scholar
  6. N. Benton, A. J. Kennedy, and G. Russell. Compiling Standard ML to Java bytecodes. In 3rd ACM SIGPLAN International Conference on Functional Programming, September 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. M. Blume. No-longer-foreign: Teaching an ML compiler to speak C "natively". In BABEL'01: First workshop on multi-language infrastructure and interoperability, Sept. 2001.Google ScholarGoogle Scholar
  8. D. Box and C. Sells. Essential .NET, Volume I: The Common Language Runtime. Addison Wesley, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Ecma International. ECMA and ISO C# and Common Language Infrastructure standards. http://www.ecma-international.org/.Google ScholarGoogle Scholar
  10. E. R. Gansner and J. H. Reppy, editors. The Standard ML Basis Library reference manual. Cambridge University Press, to appear. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. A. J. Kennedy. Functional pearl: Pickler combinators. Journal of Functional Programming, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. A. J. Kennedy and D. Syme. Design and implementation of generics for the .NET Common Language Runtime. In Programming Language Design and Implementation. ACM, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. N. J. Kokholm and P. Sestoft. Moscow ML.NET owner's manual. http://www.dina.kvl.dk/~sestoft/mosml/netmanual.pdf, Nov. 2003.Google ScholarGoogle Scholar
  14. Microsoft Corporation. The .NET Compact Framework. http://msdn.microsoft.com/mobile/.Google ScholarGoogle Scholar
  15. J. B. Miller and S. Ragsdale. The Common Language Infrastructure Annotated Standard. Addison Wesley, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition of Standard ML (Revised). MIT Press, Cambridge, Mass., 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. D. Syme. The F# compiler. http://research.microsoft.com/projects/ilx/fsharp.aspx.Google ScholarGoogle Scholar
  18. J. Vouillon, H. Hosoya, E. Sumii, and V. Gapeyev. Team PLClub. http://www.cis.upenn.edu/~sumii/icfp/, 2000.Google ScholarGoogle Scholar
  19. D. Yu, A. Kennedy, and D. Syme. Formalization of generics for the .NET Common Language Runtime. In ACM Symposium on Principles of Programming Languages, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Adventures in interoperability: the SML.NET experience

                Recommendations

                Reviews

                William M. Waite

                SML.NET is an implementation of Standard ML (SML) that targets the .NET common language infrastructure (CLI). The authors' goal seems to have been to maximize the number of .NET facilities visible to the SML programmer. Thus, the bulk of the paper is devoted to language extensions. There is a short section on performance, and one on how the implementation integrates with Visual Studio. The authors conclude that SML.NET demonstrates that the CLI is a suitable compilation target for functional languages. I would recommend this paper to ML experts who are interested in writing applications for .NET, but not to language implementers thinking about using .NET as a target. The descriptions of the language extensions illustrate how it is possible to describe a wide variety of features in ways that are at least somewhat functional. Nevertheless, my general impression of the work was one of having a hammer, and therefore regarding everything as a nail. Online Computing Reviews Service

                Access critical reviews of Computing literature here

                Become a reviewer for Computing Reviews.

                Comments

                Login options

                Check if you have access through your login credentials or your institution to get full access on this article.

                Sign in
                • Published in

                  cover image ACM Conferences
                  PPDP '04: Proceedings of the 6th ACM SIGPLAN international conference on Principles and practice of declarative programming
                  August 2004
                  260 pages
                  ISBN:1581138199
                  DOI:10.1145/1013963

                  Copyright © 2004 ACM

                  Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

                  Publisher

                  Association for Computing Machinery

                  New York, NY, United States

                  Publication History

                  • Published: 24 August 2004

                  Permissions

                  Request permissions about this article.

                  Request Permissions

                  Check for updates

                  Qualifiers

                  • Article

                  Acceptance Rates

                  Overall Acceptance Rate230of486submissions,47%

                PDF Format

                View or Download as a PDF file.

                PDF

                eReader

                View online with eReader.

                eReader