gpt4 book ai didi

haskell - 迭代列表,直到结果列表为空列表

转载 作者:行者123 更新时间:2023-12-02 16:58:23 26 4
gpt4 key购买 nike

我想看看我是否可以做这样的事情:

假设我有一个列表:[1, 8, 90, 100, 82]

现在,我想做的是这样的事情

print [8, 90, 100, 82]
print [90, 100, 82]
print [100, 82]
print [82]

所以基本上,我想打印列表的其余部分,直到得到一个空列表,然后停止。有什么方法可以在 Haskell 中做到这一点吗?

编辑:我正在寻找更通用的解决方案。例如,我还希望能够生成这个:

列表 [10, 80, 90, 82, 28]

 [70, 80, 72, 18]
[52, 62, 54]
[10, 2]
[8]

最佳答案

如何利用 IO monad:

func [_] = return ()
func (_:xs) = print xs >> func xs

当有人调用它时,会导致:

*Main> func [1, 8, 90, 100, 82]
[8,90,100,82]
[90,100,82]
[100,82]
[82]

正如您可以阅读的那样 here返回可以看作是“无操作”操作,而绑定(bind)运算符>>可以看作在第二个操作之前执行第一个操作.

关于haskell - 迭代列表,直到结果列表为空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30541686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com