列表理解Haskell

用户名

我在一次练习中遇到问题,我需要使用列表理解,问题是这样的:我收到列表,我必须计数并返回另一个列表,每个列表的出现次数为o(0 -5)。

例如:

[3,3,2,0,3,4] the output should be [1,0,1,2,1,1], 
-number 0 only happens 1 time
-number 1 never occurs 
-numer 2 occurs 1 time 
-number 3 occurs 2 times 
-and so on

我试过的

nTimes = [ y| x<-[0..5], y<- (occurs x [3,3,2,0,3,4])]


occurs n [] = 0
occurs n (x:xs) | n == x = 1+ occurs ( n xs)
                | otherwise = occurs n xs

我认为问题出在我的理解力清单上。有人可以指导我解决问题吗?

马克

首先,y不是列表,因此您必须通过y引入let或在体内使用它。

nTimes = [ y| x<-[0..5], let y = occurs x [3,3,2,0,3,4]]
-- or
nTimes = [ occurs x [3,3,2,0,3,4] | x<-[0..5]]

函数本身在递归调用中只有一个小错误

occurs n [] = 0
occurs n (x:xs) | n == x = 1 + occurs n xs
                | otherwise = occurs n xs

或者,一种更有趣的方式来编写它

occurs n x = length $ filter (== n) x

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基本的Haskell:列表理解

来自分类Dev

Haskell的单子列表理解

来自分类Dev

列表理解递归[Haskell]

来自分类Dev

多列表理解Haskell

来自分类Dev

Haskell:列表理解谓词顺序

来自分类Dev

列表理解vs zipWith在Haskell

来自分类Dev

列表理解vs zipWith在Haskell

来自分类Dev

Haskell列表理解和列表Monad

来自分类Dev

如何打破|打破|返回Haskell列表理解

来自分类Dev

为什么Haskell列表理解比循环快

来自分类Dev

[q1,..,qn]的Haskell列表理解

来自分类Dev

Haskell:列表理解是高阶函数吗?

来自分类Dev

列表理解Haskell中的意外并行语句

来自分类Dev

Haskell中任何顺序或维度的列表理解

来自分类Dev

在haskell的列表理解中进行过滤

来自分类Dev

用列表理解计数偶数haskell吗?

来自分类Dev

Haskell列表理解编译错误

来自分类Dev

Haskell - 导致列表理解立即终止

来自分类Dev

创建列表理解时的 Haskell 错误

来自分类Dev

Haskell列表理解-所有列表拆分的列表

来自分类常见问题

Haskell列表理解,从数字列表中删除整数

来自分类Dev

Haskell列表理解(为列表元素打印sqrt)

来自分类Dev

Haskell列表理解,从数字列表中删除整数

来自分类Dev

基本的haskell:n次复制元素的列表理解

来自分类Dev

在Haskell中,列表理解的内部工作原理是什么?

来自分类Dev

Haskell-使用列表理解编写zip函数

来自分类Dev

重写do-notation中的haskell列表理解

来自分类Dev

Haskell列表理解速度不一致

来自分类Dev

具有列表理解的Haskell中的数字字符映射