あれ、なんか揉めてる?
Haskellもfor無いからfor each的なのならmapとかfoldlだけど。

map (+1) [1..3]
>[2,3,4]

for的なのは、それにzipしたリスト渡す。

map (\( i, x)-> ( i, x + 1)) $ zip [0..] [1..3]
[(0,2),(1,3),(2,4)]