gpt4 book ai didi

list - Haskell 中的双重列表理解

转载 作者:行者123 更新时间:2023-12-04 22:08:27 26 4
gpt4 key购买 nike

我正在尝试将数组实现为 Haskell 中的列表列表。特别是,我有一些数组 m我得到了一个谓词 p我想得到满足,我想创建一个索引列表 (x,y)这样 x y 的第一个元素第一个列表满足p .我将其设置为以下列表理解:

[(x,y) | x<-[1..],y<-[1..],p ((m !! y) !! x)]  

当它试图找到 m 的元素时抛出错误在第一行不存在。我可以看到解决此问题的一种直接方法是仅更改 x 上的内部理解和 y类似于 y<-[1..length m]但我觉得有一种更可爱的方法可以利用懒惰。我只是不知道它是什么。

最佳答案

确实有。获取列表元素及其索引的常用习惯是使用 zip:

[(x,y) | (x,mx) <- zip [1..] m, (y,mxy) <- zip [1..] mx, p mxy]

还有:

  • !! 效率很低,尤其是从列表中提取很多元素时,因此最好尽可能避免使用它。
  • 在 Haskell 中,列表索引通常以 0 开头。

关于list - Haskell 中的双重列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32035639/

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