haskell - 使用列表理解实现 take 函数

标签 haskell list-comprehension take

如何使用列表理解来实现 take

到目前为止我的方法:

take2 :: (Num i, Ord i) => i -> [a] -> [a]
take2 n xs = [x | x <- xs, [x..n]]

最佳答案

列表推导式不太适合 take 函数的根本原因是:

take 函数在 n 个元素之后停止对参数列表的求值

但列表推导式始终评估生成器中列表的所有元素。 Haskell 中没有break 语句。

<小时/>

您可以在列表理解中使用列表之前或之后使用一些技巧来截断列表,但这样做没有真正的意义。这类似于首先使用普通的 take 来截断列表,然后使用列表理解来返回结果。

关于haskell - 使用列表理解实现 take 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49110195/

相关文章:

haskell - Parsec:解析包含以 '$' 开头的变量的表达式(无空格)

haskell - 连接解析结果

python - 使用列表理解进行多个操作的嵌套 for 循环

python - 嵌套列表理解

list - Haskell - 如何在排序后从元组列表中取出 n 项

haskell - 什么是 cabal 'world' 文件?

haskell - 即使使用 bang 模式,ghci 内存也会增加

python - 如何在列表理解中定义变量?

c# - 从字典中取出 n 个元素

haskell - 使用 foldr 实现 take