## 1.1 - Product ``` let rec product = function | [] -> 0 | x::t -> x + product t;; ``` ## 1.2 - Count ``` 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 ``` 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}$ ``` 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 e = x then 1 + count t n else count t n;; ```