结合Haskell代码片段以获得更大的画面
这是我在某处遇到的代码,但想知道它是如何工作的: findIndices :: (a -> Bool) -> [a] -> [Int] findIndices _ [] = [] findIndices pred xs = map fst (filter (pred . snd) (zip [0..] xs)) 输出:findIndices(== 0)[1,2,0,3,0] == [2,4],其中pred是(== 0)&xs是[1,2,0,3,0] 我将展示一些理解: (zip [0..] xs) 上一行所做的是将索引放入列表中的所有内容。对于上面给出的输入,它看起来像这样:[(0,1),(1,2,2,(2,0),(3,3),(4,0)] (pred . snd) 我发现这意味着像pred(snd(x))。我的问题是,列表是否由邮编组成?我倾向于是,但是我的猜测很脆弱。 接下来,是我对fst和snd的理解。我知道 fst(1,2) = 1 和 snd(1,2) = 2 …