В следующем коде, что означает m!!i!!j
? Любые примеры будут полезны.Haskell !! операторская комбинация
matrixElements :: [[t]] -> [t]
matrixElements m =
[m!!i!!j | i<-[0..length m - 1],
j<-[0..length(head m) - 1],
even(i + j)]
main = assertEqual [1,3,5,7,9] $ matrixElements [[1,2,3], [4,5,6], [7,8,9]]
[ '(!!) :: [а] -> Int -> a'] (http://hackage.haskell.org/package/base-4.9.0.0/docs/Data-List.html#v:-33--33-) принимает список и индекс и возвращает элемент списка на индекс. – sjakobi
Может быть лучше написано как '[x | (i, row) <- zip [0 ..] m, (j, x) <- zip [0 ..] row, even (i + j)] '. – Ryan
Пожалуйста, см. Тег haskell [info section] (http://stackoverflow.com/tags/haskell/info) – jberryman