0
Так у меня есть список слов и счетчики:Приращение счетчика для слова в списке слов и счетчиков
[("word1", 1), ("word2", 1)]
и мне было интересно, как я хотел бы увеличить счетчик для слова я добавить в этот список, например:
- Если слово уже было в списке, то увеличиваем счетчик для этого слова:
counts "word1" [("word1", 1), ("word2", 1)] => [("word1", 2), ("word2", 1)]
- В противном случае создать новый счет в списке:
counts "word3" [("word1", 1), ("word2", 1)] => [("word1", 1), ("word2", 1), ("word3", 1)]
Вот код, я пытался до сих пор:
fun counts w [] [(w, 1)]
| counts w ((hd, n)::tl) =
if(w hd) then (hd, n+1)::tl
else if(not(w hd)) then [(hd, n)]@[(w, 1)]@tl
else (hd, n)::tl;
Я получив правильный вывод для второго случая, но для первого случая это t он выход я получаю:
counts "the" [("cat", 1), ("the", 1)];
val it = [("cat",1),("the",1),("the",1)] : (string * int) list
Спасибо так много! Я получу его ха-ха, запутался с добавлением его в результирующий список ^^ – madcrazydrumma