Из примера списка ["dog"; "cat"; "dog"; "cat"; "dog"] Мне нужно найти количество времени, в течение которого слово этот список Результат -> [(«dog», 3); («cat», 2)] Но я получаю странный результат: [(«dog», 1); («кошка», 1); («собака», 2); («кошка», 2); («Собака», 3)]Ocaml - Найти число слов в списке
Мой код заключается в следующем:
let rec nuovaParola par l =
match l with
[] -> true
|(a,_)::z ->if (par=a) then false
else nuovaParola par (List.tl l);;
let rec contaParole par l =
let rec contatore par l cont =
match l with
[] -> (par, cont)
|x::y -> if(par=x) then contatore par y (cont+1)
else contatore par y cont
in contatore par l 0;;
let rec occorrenze l =
let rec aux l l1=
match l with
[] -> l1
|x::y -> if (nuovaParola x l1) then aux y [email protected][(contaParole x l)]
else aux y l1
in aux l [];;`
nuovaParola дает мне верно, если слово не находится внутри списка еще дает мне ложь.
contaParola восстанавливает кортеж (слово, число);
Фактическая функция Occorrenze. Я не нахожу проблему! Спасибо за помощь!
Возможный дубликат [создать гистограмму OCaml] (http://stackoverflow.com/questions/40442527/create-a-histogram-ocaml) – coredump