|
- [Basics] of SML.
-
- Hello world:
print "hello world\n"
(* SML hello world program, LA 11/4/2005 *)
|
use:
ne> sml
Standard ML of ...
- use "hello.sml";
[opening hello.sml]
hello world
val it = () : unit
val it = () : unit
-<CTRL>d
- ne>
|
-
- cat:
open TextIO; (* i.e. the I/O library *)
fun cat fileName =
let
fun f inS =
if endOfStream inS then
( closeIn inS; print "\n" )
else ( print (inputN(inS, 1)); f inS )
in f(openIn fileName)
end;
(* e.g. *) cat "cat.sml";
(* Copy file to std output, L.A., 11/4/2005 *)
(* Also see I/O, Ch 4, *)
(* Ullman "Elements of ML Programming" 1998 *)
|
-
- [Big Ints], more than 32- or 64-bits.
-
- [High-Order Functions]
accept functions as parameters and/or return functions as results.
-
- [Parser] (recursive descent) for expressions.
-
- [Lazy data types]
are not standard in SML but they can be implemented in the language.
-
- [Structures, signatures, functors],
struct, sig.
-
- [Continuations]
can be used to implement non-standard control mechanisms.
-
- [Fixed-point operator, `Y'],
note that Y does not refer to itself within its body,
nor does the local function Ggg;
one could rewrite Y to consist of only anonymous functions.
Also see [λ/Y].
-
- [semantics.toy]
direct denotational sematics of a toy imperative language
expressed in SML-97
-
Further Reading:
- [λ-calculus].
|
www #ad:
SML:
:: | cons |
[x1,...] | list |
[ ] | list |
@ | append |
fn => | &lambda . |
: | has type |
|
|
|