(S)ML-97 Examples

LA home
Computing
FP
 SML
  SML97
   Basics
   High O.Fn
   Laziness
   Structures
   Conts.
   Exp.parser
   sem'.toy
[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:

SML:
:: cons
[x1,...] list
[ ] list
@ append
fn =>  &lambda .
: has type

↑ © L. Allison, www.allisons.org/ll/   (or as otherwise indicated).
Created with "vi (Linux)",  charset=iso-8859-1,   fetched Wednesday, 11-Dec-2019 03:17:26 EST.

Free: Linux, Ubuntu operating-sys, OpenOffice office-suite, The GIMP ~photoshop, Firefox web-browser, FlashBlock flash on/off.