Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
COMP 302: Programming Languages and Paradigms, Fall 2008 -- Resources
[go: Go Back, main page]

SML & SML/NJ

Standard ML (SML) is a safe, modular, strict, functional, polymorphic programming language with compile-time type checking and type inference, garbage collection, exception handling, immutable data types and updatable references, abstract data types, and parametric modules. It has efficient implementations and a formal definition with a proof of soundness. SML/NJ is the implementation of SML we will be using in this course. Other well-known implementation include MLton, MoscowML, and Poly/ML. The parts of the course concerned with programming in SML will, to a large extent, follow R. Harper's "Programming in Standard ML" (available online), supplemented by the lecture notes. For the more theoretical parts, you may also find R. Harper's "Practical Foundations for Programming Languages" (available online) useful.

To get you started with SML and SML/NJ, consult the FAQ page. The following external resources might also be useful.

Functional programming in practice

Functional programming has emerged as the central organizing principle in programming language design, and is increasingly important in industrial as well as academic settings. If you are interested in learning more about how and where functional programming is used in industry, check out the following.

Performance Comparisons

For an interesting recent comparison between programming languages, see the ray tracer language comparison. For some older articles on why functional programming matters, see the following.

Programming Contests

Once you have mastered SML, you may be intrigued by the International Conference on Functional Programming (ICFP) programming contest held every year. Check out the most recent contest here. Note that this contest does not require you to program in a functional language, but nevertheless many people choose a functional language.

Emacs

Emacs (available in two implementations, GNU Emacs and XEmacs) is a powerful and widely used family of text editors. It is well-suited for SML development, since it is highly customizable and extensible, and there exists a package for emacs called SML-mode, which makes it easy to interact with an SML/NJ session directly within the editor. See the FAQ page for more detailed information on obtaining, installing, and using both emacs and SML-mode for emacs.