!! という演算子の働き

ちょっとだけ時間に余裕ができたので、Haskell を復習しよう。

Haskell を勉強していたのは一年半ぐらい前で、日常的に使わないからすっかり忘れてしまっている。

昔書いた、コマンドライン文字列を受け取って、それを表示するサンプル。

import System

main =
	do
		args <- getArgs
		putStrLn $ "hello, " ++ args !! 0 ++ "!"


忘れてても見ればわかるものと、見てもわからないものがある。

(!!) って演算子は何じゃ?

わからないから haskell.org の Prelude のドキュメントで調べてみる。

(!!) :: [a] -> Int -> a
List index (subscript) operator, starting from 0. It is an instance of the more general Data.List.genericIndex, which takes an index of any integral type.

演算子(というか関数)は、リストを受け取って、そのリストの指定した要素を返す、という感じのようだ。コマンドラインの第一引数を取り出すということか。

args !! 0

これは args の最初の要素を返す、ということだな。

ありゃりゃ、全然覚えてねーなぁ・・・。