haskell - 添加列表中每第 5 个(或第 n 个)元素的方法是什么?

标签 haskell

我一直在尝试解决此 question 提供的示例在 StackOverflow 上。我误解了它。我想从列表中删除每 5 个元素并将它们一起放入另一个列表中。

这是迄今为止我最好的尝试。

fifth(_:_:_:_xs) = xs fifth xs
fifth [] = []

最佳答案

最好将您的关注点分开:创建一个函数,对列表进行“切片”并获取每五个元素,然后对该列表求和。

fifth :: [a] -> [a]
fifth (x:_:_:_:_:xs) = x : fifth xs
fifth (x:_) = [x]
fifth [] = []

然后对元素列表求和:

sumFifth :: Num a => [a] -> a
sumFifth = sum . <b>fifth</b>

关于haskell - 添加列表中每第 5 个(或第 n 个)元素的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66268431/

相关文章:

networking - TCP 在 GHCi 中工作,在使用 Leksah 编译的程序中缓冲直到程序退出

oop - 相当于在 Haskell 中创建对象

macos - 从 Rust 调用动态链接的 Haskell 代码

haskell - 如何在haskell中调用另一个函数中返回元组的函数?

haskell - 在 Haskell 中生成 .wav 声音数据

haskell - 在使用类型系列限制 GADT 时摆脱 "non-exhaustive patten matches"警告

haskell - 是否有最大数量的可以通过 Cabal 编译的模块?

haskell - haskell 的教堂名单

haskell - Haskell 中的不可见类型签名

haskell - 表达式 str a b = ((.).(.)) (0 -) (+) 1 2