fork download
  1. mapIf :: (Int -> Bool) -> (a -> a) -> [a] -> [a]
  2. mapIf pred f l = map (\(value,index) -> if (pred index) then f value else value) $ zip l [1..]
  3.  
  4. mapEveryN :: Int -> (a -> a) -> [a] -> [a]
  5. mapEveryN n = mapIf (\x -> x `mod` n == 0)
  6.  
  7. main = print $ mapEveryN 3 (*2) [1,1,1,1,1,1,1]
Success #stdin #stdout 0s 4700KB
stdin
Standard input is empty
stdout
[1,1,2,1,1,2,1]