Haskell中上一个和下一个表元素Map函数

nzrxty8p  于 2022-11-14  发布在  其他
关注(0)|答案(2)|浏览(141)

我有一个列表,例如[1,2,3,4,5],其中我不仅需要知道当前元素,还需要知道前一个和后一个元素。是否有可以如下使用的Map函数:

map (\prev cur next -> ...) [1,2,3,4,5]

或者也许你有另一个解决问题的主意?

w80xi6nr

w80xi6nr1#

您可以将这些列表压缩在一起,并将每个列表中的一个元素删除

>> as = [1..5]
>> zipWith3 (\prev cur next -> (prev, cur, next)) as (drop 1 as) (drop 2 as)
[(1,2,3),(2,3,4),(3,4,5)]
djmepvbi

djmepvbi2#

您可以使用tails,然后分别处理三个项目:

import Data.List(tails)

[ … | (x₀ : x₁ : x₂ : _) <- tails [1, 2, 3, 4, 5] ]

例如:

import Data.List(tails)

[ (x₀, x₁, x₂) | (x₀ : x₁ : x₂ : _) <- tails [1, 2, 3, 4, 5] ]

因此,这里的(x₀, x₁, x₂)参数将与(1, 2, 3)(2, 3, 4)(3, 4, 5)一起工作。

相关问题