diff --git a/plailude.cabal b/plailude.cabal
--- a/plailude.cabal
+++ b/plailude.cabal
@@ -1,5 +1,5 @@
 name:                plailude
-version:             0.5.1
+version:             0.6.0
 synopsis:            plaimi's prelude
 description:         The prelude used internally at plaimi.
 
@@ -26,6 +26,7 @@
                        Plailude.Control.Arrow
                        Plailude.Control.Bool
                        Plailude.Control.IO
+                       Plailude.Control.List
                        Plailude.Control.Monad
                        Plailude.Data.Text
                        Plailude.Data.Text.Show
diff --git a/src/Plailude.hs b/src/Plailude.hs
--- a/src/Plailude.hs
+++ b/src/Plailude.hs
@@ -17,6 +17,8 @@
   -- Function
   (.:),
   (.:.),
+  -- List
+  (!?),
   -- Text
   showL8,
   -- Data.Time
diff --git a/src/Plailude/Control.hs b/src/Plailude/Control.hs
--- a/src/Plailude/Control.hs
+++ b/src/Plailude/Control.hs
@@ -6,6 +6,7 @@
 
 Maintainer  :  plailude@plaimi.net
 -} module Plailude.Control (
+  (!?),
   (~+~),
   both,
   erretreat,
@@ -17,4 +18,5 @@
 import Plailude.Control.Arrow
 import Plailude.Control.Bool
 import Plailude.Control.IO
+import Plailude.Control.List
 import Plailude.Control.Monad
diff --git a/src/Plailude/Control/List.hs b/src/Plailude/Control/List.hs
new file mode 100644
--- /dev/null
+++ b/src/Plailude/Control/List.hs
@@ -0,0 +1,16 @@
+{- |
+Module      :  $Header$
+Description :  Lists. dealwithit.jpeg.
+Copyright   :  (c) plaimi 2015
+License     :  GPL-3
+
+Maintainer  :  plailude@plaimi.net
+-} module Plailude.Control.List where
+
+(!?) :: [a] -> Int -> Maybe a
+-- | Safe indexing of lists.
+l !? i = if i < 0 then Nothing else go i l
+  where
+    go _ []     = Nothing
+    go 0 (x:_)  = Just x
+    go n (_:xs) = go (n - 1) xs
