这里的第一个问题,完全是haskell的菜鸟,所以请善待我:)
我在玩这个haskell练习的第6题
最后用这段代码找到了解决方案(或者我希望的类似的东西)
combinations gr lis = filter clean $ sequence $ replicate gr lis
where
clean string
| total > gr = False
| otherwise = True
where total = sum [ rpt c string | c <- string]
rpt chr list = length $ filter (== chr) list
我喜欢强调的部分是函数'rpt',它计算一个字符在字符串中重复的次数,例如:“aaba”-> [3313](3来自字母a,它重复3次)“aaccva”-> [332213]
后来我尝试使用 lambda 和 map 来制作函数,结果如下:
rpt chr list = map (\chr -> length $ filter (== chr)) list
起初 ghci 告诉我使用 FlexibleContext 来允许这样做,但如果我这样做了,它会产生:
<interactive>:7:1:
No instance for (Foldable ((->) [Char]))
arising from a use of ‘rpt’
In the expression: rpt 'a' string
In an equation for ‘it’: it = rpt 'a' string
在这里我被卡住了,我无法理解发生了什么......修复这个功能需要什么?