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,0),(3,3),(4,0)]。 (pred . snd) これはのようなものであることがわかりましたpred (snd (x))。私の質問は、xリストはzip行から作成されていますか?私はイエスに傾いていますが、私の推測は薄っぺらです。 次は、私の理解であるfstとsnd。そんなこと知ってる fst(1,2) = 1 そして snd(1,2) = …