70 lines
900 B
Markdown
70 lines
900 B
Markdown
## 1.1 - Product
|
|
|
|
```Ocaml
|
|
let rec product = function
|
|
| [] -> 0
|
|
| x::t -> x * product t;;
|
|
```
|
|
## 1.2 - Count
|
|
```Ocaml
|
|
let rec count x n =
|
|
if x = [] then
|
|
0
|
|
else
|
|
let e::t = x in
|
|
if e = x then
|
|
1 + count t n
|
|
else
|
|
count t n;;
|
|
```
|
|
|
|
## 1.3 - Search
|
|
```Ocaml
|
|
let rec search x n =
|
|
if x = [] then
|
|
0
|
|
else
|
|
let e::t = x in
|
|
if e = x then
|
|
true
|
|
else
|
|
search t n;;
|
|
```
|
|
|
|
## 1.4 - $n^{th}$
|
|
```Ocaml
|
|
let rec length l =
|
|
if l = [] then
|
|
0
|
|
else
|
|
let e::t = l in
|
|
1 + length t;;
|
|
let rec nth x n =
|
|
if (x = [] || n =< 0) then
|
|
Invalid_arg "The number of element in the list is 0"
|
|
else if length x < n then
|
|
Failwith "The list is too short"
|
|
else
|
|
let e::t = x in
|
|
if n = 0
|
|
return e
|
|
else
|
|
nth t (n-1) ;;
|
|
```
|
|
|
|
## 1.5 - Maximum
|
|
```Ocaml
|
|
let max l =
|
|
if l = [] then
|
|
0
|
|
else
|
|
let maxi = 0
|
|
let rec m =
|
|
let e::t = l
|
|
if e >= maxi then
|
|
maxi = e
|
|
else
|
|
m t
|
|
```
|
|
|