# Standard ML Programming/Examples and Exercises

## Values and Functions[edit]

- Indicate the identifiers, keywords, and special constants in the following piece of code. What is the value of the second
`a`

?

val a = 5 val b = 9 val a = 2*a+b;

- Construct a tuple with 4 positions and 3 components.

- What is the type of t?

fun f a = 2 val t = (true,f,f 1);

- 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[edit]

- 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 and

- 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)