I'm trying to print a specific list, but it doesn't work
let rec listes_paires l = match l with
| [] -> []
| x :: r ->
if List.length x mod 2 = 0 then
(x :: (listes_paires r))
else
((x @ x) :: (listes_paires r));;
List.iter print_int (listes_paires [[]; [1];[1;2];[1;2;3];[];[5;4;3;2;1]]);;
Error message says :
Line 5, characters 20-74:
Error: This expression has type int list list
but an expression was expected of type int list
Type int list is not compatible with type int
val listes_paires : 'a list list -> 'a list list = <fun>
You're not trying to print a list, but a list of lists. The type of listes_paires
, as you point out yourself, is 'a list list -> 'a list list
You can print a list of lists just by adding another List.iter
to iterate over the inner lists as well:
List.iter
(List.iter print_int)
(listes_paires [[]; [1];[1;2];[1;2;3];[];[5;4;3;2;1]]);;