epicours/Algo/Courses/Chapter 6 - Lists (Exercises).md

900 B

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;;
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 n = 0
			return e
		else
			nth t (n-1) ;;

1.5 - Maximum

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