Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 创建一个函数,用于计算列表中出现的所有不同单词的计数_Haskell - Fatal编程技术网

Haskell 创建一个函数,用于计算列表中出现的所有不同单词的计数

Haskell 创建一个函数,用于计算列表中出现的所有不同单词的计数,haskell,Haskell,因此,我需要创建一个函数,该函数接受包含字符串的列表列表,并返回列表中每个单词的计数。我创建了这个函数,但是我遇到了两个问题,第一个是它没有返回正确的计数,第二个是它返回重复的计数 wordCount [] = [] wordCount ([]:xss) = wordCount xss wordCount ((x:xs):xss) = (x , 1 + length (filter (==x) xs:xss)) : wordCount (xs:xss) 您可以对列表进行压缩以获得一个列表,然

因此,我需要创建一个函数,该函数接受包含字符串的列表列表,并返回列表中每个单词的计数。我创建了这个函数,但是我遇到了两个问题,第一个是它没有返回正确的计数,第二个是它返回重复的计数

wordCount [] = []
wordCount ([]:xss) = wordCount xss
wordCount ((x:xs):xss) = (x , 1 + length (filter (==x) xs:xss)) : wordCount (xs:xss)


您可以对列表进行压缩以获得一个列表,然后对其进行排序、分组并查找组的长度:

导入数据。列表
字数::(Ord a)=>[[a]]->[(a,Int)]
wordCount=map(\x->(头x,长度x))。小组。分类海螺
如果无法导入内容,则可以自己进行
分组
排序

排序:(Ord a)=>[a]->[a] 排序'[]=[] sort'(x:xs)=sort'left++pivot++sort'right 哪里 左=过滤器(x)xs 组“::(等式a)=>[a]->[[a]] 组'[]=[] 组'[x]=[[x]] 组(x:xs)= 如果x==头f 然后(x:f):l else[x]:休息 其中rest@(f:l)=组'xs 字数::(Ord a)=>[[a]]->[(a,Int)] wordCount=map(\x->(头x,长度x))。集团'。排序'。海螺
期望的输出是什么?[(“rose”,3),(“a”,3),(“is”,2),(“but”,1),(“so”,1)]忘了提到我不允许进口anything@HasanSaleh我已经编辑了我的答案,以包含一个没有导入的解决方案。
wordCount [["a", "rose", "is", "a", "rose"],["but", "so", "is", "a", "rose"]]

--> [("a",3),("rose",3),("is",3),("a",3),("rose",3),("but",2),("so",2),("is",2),("a",2),("rose",2)]