\begin{verbatim} (* Program for generating primes upto some number *) local fun primeWRT (m, []) = true | primeWRT (m, h::t) = if m mod h = 0 then false else primeWRT (m, t) fun generateFrom (P, m, n) = if m > n then P else if primeWRT (m, P) then ( print (Int.toString (m)^" is a prime\n"); generateFrom ((m::P), m+2, n) ) else generateFrom (P, m+2, n) in fun primesUpto n = if n < 2 then [] else if n=2 then [2] else if (n mod 2 = 0) then primesUpto (n-1) else generateFrom ([2], 3, n); end \end{verbatim}