>>> ['a', 'b', 'c'] !! 0 'a'
>>> ['a', 'b', 'c'] !! 2 'c'
>>> ['a', 'b', 'c'] !! 3 *** Exception: Prelude.!!: index too large
>>> ['a', 'b', 'c'] !! (-1) *** Exception: Prelude.!!: negative index
>>> ['a', 'b', 'c'] !! 0 'a' >>> ['a', 'b', 'c'] !! 2 'c' >>> ['a', 'b', 'c'] !! 3 *** Exception: Prelude.!!: index too large >>> ['a', 'b', 'c'] !! (-1) *** Exception: Prelude.!!: negative indexWARNING: This function is partial. You can use atMay instead.
>>> ['a', 'b', 'c'] !! 0 'a' >>> ['a', 'b', 'c'] !! 2 'c' >>> ['a', 'b', 'c'] !! 3 *** Exception: Prelude.!!: index too large >>> ['a', 'b', 'c'] !! (-1) *** Exception: Prelude.!!: negative index
>>> ['a', 'b', 'c'] !! 0 'a' >>> ['a', 'b', 'c'] !! 2 'c' >>> ['a', 'b', 'c'] !! 3 *** Exception: Prelude.!!: index too large >>> ['a', 'b', 'c'] !! (-1) *** Exception: Prelude.!!: negative indexWARNING: This function is partial. You can use <atMay https://hackage.haskell.org/package/safe-0.3.19/docs/Safe.html#v:atMay> instead.
>>> at 2 ["a", "b", "c"] "c"it is also useful when used in a partially applied position like:
>>> map (at 1) [["a","b","c"], ["a","b","c"], ["a","b","c"]] ["b","b","b"]