2017-02-03 14 views
0

次のコードでは、m!!i!!jは何の略ですか?すべての例が参考になります。ハスケル!!演算子の組み合わせ

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]] 
+0

[ '(!!):: [A] - >のInt - > A']( http://hackage.haskell.org/package/base-4.9.0.0/docs/Data-List.html#v:-33--33-)は、リストとインデックスを取得し、リストの要素をインデックス。 – sjakobi

+2

'[x | (i、row)< - zip [0 ..] m、(j、x)< - zip [0 ..] row、even(i + j)] 'である。 – Ryan

+0

haskellタグを参照してください。[info section] – jberryman

答えて

3

インポートする内容によって異なります。 There are many functions named (!!)

the one in Preludeを意味おそらく:

(!!) :: [a] -> Int -> a

リスト指数(添字)演算子、これは任意の整数の指数を取るgenericIndex、より一般的なのインスタンスであり、0から始まりますタイプ。

いくつかの簡単な例:

  • "abcde" !! 2 == 'c'
  • ["zero", "one", "two", "three"] !! 2 == "two"
  • [0..99] !! 24 == 24
+0

私はそれを感謝してくれたことを理解しました:) – user7054784

+0

その結果ページの前奏曲 '!!'だけが唯一のものです遠隔共通、fwiw – luqui

関連する問題