Standard ML Programming/Examples and Exercises

Values and Functions
val a = 5 val b = 9 val a = 2*a+b;
 * Indicate the identifiers, keywords, and special constants in the following piece of code. What is the value of the second ?


 * Construct a tuple with 4 positions and 3 components.

fun f a = 2 val t = (true,f,f 1);
 * What is the type of t?


 * Write a function that returns the value 2 for the arguments 0, 1 and 2 and returns 3 for all other arguments.


 * Write a function that returns -1 for all negative and +1 for all positive arguments and 0 for the argument 0.


 * Create a function min(a:int,b:int) that returns the smaller one of its 2 arguments. Do the separation of the argument values in 3 different ways. Using a Cartesian argument-pattern, using a projection and using a local declaration.

(solutions to this chapter are here)

Recursion

 * Create a function power9(x) that calculates the 9th power of x. Preferably using as few multiplications as possible.


 * Calculate the greatest common denominator from 2 positive integer arguments.


 * Calculate mul(n,z)=n*z without using the * operator for $$n \in \mathbb{N}$$ and $$z \in \mathbb{Z}$$


 * Calculate power2(n) by only using addition and resursion. (hint: it is possible to rewrite the square function as a summation of natural numbers.)

(solutions to this chapter are here)