mapIf
:: (Int -> Bool) -> (a
-> a
) -> [a
] -> [a
]mapIf
pred f l
= map (\
(value
,index
) -> if (pred index
) then f value
else value
) $ zip l
[1..]
mapEveryN
:: Int -> (a
-> a
) -> [a
] -> [a
]mapEveryN n
= mapIf
(\x
-> x `
mod` n
== 0)
main
= print $ mapEveryN
3 (*2) [1,1,1,1,1,1,1]
bWFwSWYgOjogKEludCAtPiBCb29sKSAtPiAoYSAtPiBhKSAtPiBbYV0gLT4gW2FdCm1hcElmIHByZWQgZiBsID0gbWFwIChcKHZhbHVlLGluZGV4KSAtPiBpZiAocHJlZCBpbmRleCkgdGhlbiBmIHZhbHVlIGVsc2UgdmFsdWUpICQgemlwIGwgWzEuLl0KCm1hcEV2ZXJ5TiA6OiBJbnQgLT4gKGEgLT4gYSkgLT4gW2FdIC0+IFthXQptYXBFdmVyeU4gbiA9IG1hcElmIChceCAtPiB4IGBtb2RgIG4gPT0gMCkKCm1haW4gPSBwcmludCAkIG1hcEV2ZXJ5TiAzICgqMikgWzEsMSwxLDEsMSwxLDFd