リストの k 番目の要素を選択するには、 を使用します!!
。最初の要素はインデックスです0
selectN = (!!)
ghci> let test = "abracadabra"
ghci> test !! 0
ghci> 'a'
ghci> test !! 9
ghci> 'r'
indexOutOfRange
ただし、例外に注意してください
ghci> test !! 11
*** Exception: Prelude.(!!): index too large
編集 : 関数を安全にする
エラー例外を処理するために a を記述してsafeSelectN
、プログラムが何もせずに安全に続行できるようにすることができますIO
。そのためには、次の変更が必要です
safeSelectN :: Int -> [a] -> [a]
safeSelectN n xs = if null xs || length xs < n then [] else [xs !! n]
この場合、結果として空のリストを受け取ることでエラーが検出されます。
ghci> safeSelectN 3 ""
[]
ghci> safeSelectN 0 ""
[]
ghci> safeSelectN 3 "abcd" --like this
['d']
したがって、結果が正しい場合、k 番目の要素だけではなく、k 番目の要素のみを含むリストになります。