haskell-jp / beginners #14 at 2021-03-03 20:49:15 +0900

「すごいH本」の72〜73ページでわからないことがあります.
ghci> let listOfFans = map (*) [0..]
ghci> (listOfFans !! 4) 5
20

と書いてあり,実行すると実際に20が出力されるのですが,`[0..]`で得られるリストは`[0, 1, 2, 3, 4, 5, 6, ...]`ですよね?`(listOfFans !! 4)`ではリスト4番目の要素の3が戻り値になると思ったのですが,なぜ4なのでしょうか.
初歩的な質問ですが教えていただけると幸いです.
[0..] !! 4 を実行してみましょう。すると、 4 という結果になります。他の数として [0..] !! 1 を実行すると 1 になります。
リストの最初の要素を取り出すには 0 を使わなければなりません。その次の要素を取り出すには 1 を使わなければなりません。その次も……というようになります。
返信ありがとうございます.
!! を使ってn個目の要素を取得するとき,nは0から数え始めるってことですかね.確かにPythonなどで`a = [1, 2, 3, 4, 5]` のリストから1を取りたいときは`a[0]` だから,それと同じ考えですね.
ありがとうございました.