## OCAML Course

# MCQ

A bunch of simple questions about OCaml (not quite an MCQ ðŸ˜–), summarizing what you learned in the section "Basic concepts".

## Question 1

What's the type of `let my_function x = x * x`

?

Notice the`*`

only usable on an`int`

, so the function takes an int and return an int giving us`int -> int`

## Question 2

What's the type of `let my_function x y = x ** y`

?

Notice the`**`

only usable on two`floats`

, so the function takes two floats and return a float giving us`float -> float -> float`

. If you didn't know,`x ** y`

is the exponentiation ($x^y$).

## Question 3

What's the type of `let my_function x = 5`

?

```
We don't know the type of x, but the return type is int, so we have
````'a -> int`

.

## Question 4

What's this code doing?

```
(* x is a number, power > 0 *)
let pow x power =
if power = 1
then x
else x * (pow x power-1)
```

It's not working.

- The keyword
`rec`

is missing- We are missing a parenthesis around
`power-1`

, for OCaml we wrote`(pow x power)-1`

The code would do $x^{power}$ if it was working.

## Question 5

Is a function like this $f_{n}(f_{n-1}(...f_{2}(f_{1}())...))$ terminal or nonterminal?

It's a terminal function! We are evaluating n before n+1. So we aren't postponing quite a lot of calculations.