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.
- The MLton Compiler. http://www.mlton.org/.Google Scholar
- The SML.NET Compiler. http://www.cl.cam.ac.uk/Research/TSG/SMLNET/.Google Scholar
- Visual Studio Industry Partner Programme. http://msdn.microsoft.com/vstudio/extend/.Google Scholar
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 Scholar
- D. Box and C. Sells. Essential .NET, Volume I: The Common Language Runtime. Addison Wesley, 2003. Google ScholarDigital Library
- Ecma International. ECMA and ISO C# and Common Language Infrastructure standards. http://www.ecma-international.org/.Google Scholar
- E. R. Gansner and J. H. Reppy, editors. The Standard ML Basis Library reference manual. Cambridge University Press, to appear. Google ScholarDigital Library
- A. J. Kennedy. Functional pearl: Pickler combinators. Journal of Functional Programming, 2004. Google ScholarDigital Library
- 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 ScholarDigital Library
- N. J. Kokholm and P. Sestoft. Moscow ML.NET owner's manual. http://www.dina.kvl.dk/~sestoft/mosml/netmanual.pdf, Nov. 2003.Google Scholar
- Microsoft Corporation. The .NET Compact Framework. http://msdn.microsoft.com/mobile/.Google Scholar
- J. B. Miller and S. Ragsdale. The Common Language Infrastructure Annotated Standard. Addison Wesley, 2003. Google ScholarDigital Library
- R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition of Standard ML (Revised). MIT Press, Cambridge, Mass., 1997. Google ScholarDigital Library
- D. Syme. The F# compiler. http://research.microsoft.com/projects/ilx/fsharp.aspx.Google Scholar
- J. Vouillon, H. Hosoya, E. Sumii, and V. Gapeyev. Team PLClub. http://www.cis.upenn.edu/~sumii/icfp/, 2000.Google Scholar
- 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 ScholarDigital Library
Index Terms
- Adventures in interoperability: the SML.NET experience
Recommendations
Exploring Parafunctional Programming: Separating the What from the How
A method is presented that takes functional programming one step further by letting the programmer change operational (parafunctional) details without restructuring or rewriting the program. Parafunctional programming is based on the premise that the ...
Leveraging .NET meta-programming components from F#: integrated queries and interoperable heterogeneous execution
ML '06: Proceedings of the 2006 workshop on MLLanguage-integrated meta-programming and extensible compilation have been recurring themes of programming languages since the invention of LISP. A recent real-world application of these techniques is the use of small meta-programs to specify database ...
Comments