diff --git a/library/Ptr/Parse.hs b/library/Ptr/Parse.hs
--- a/library/Ptr/Parse.hs
+++ b/library/Ptr/Parse.hs
@@ -173,15 +173,15 @@
   {-# SCC "bytesWhile" #-}
   Parse $ \ !availableAmount !ptr failWithEOI failWithMessage succeed ->
   let
-    iterate !availableAmount !unconsumedAmount !ptr =
+    iterate !availableAmount !unconsumedAmount !currentPtr =
       if unconsumedAmount > 0
         then do
-          byte <- C.peek ptr
+          byte <- C.peek currentPtr
           if predicate byte
-            then iterate availableAmount (pred unconsumedAmount) (plusPtr ptr 1)
+            then iterate availableAmount (pred unconsumedAmount) (plusPtr currentPtr 1)
             else do
               bytes <- B.packCStringLen (castPtr ptr, availableAmount - unconsumedAmount)
-              succeed bytes unconsumedAmount ptr
+              succeed bytes unconsumedAmount currentPtr
         else failWithEOI 0
     in iterate availableAmount availableAmount ptr
 
diff --git a/library/Ptr/Poking.hs b/library/Ptr/Poking.hs
--- a/library/Ptr/Poking.hs
+++ b/library/Ptr/Poking.hs
@@ -140,3 +140,12 @@
     LocalTime date (TimeOfDay hour minute second) = utcToLocalTime utc utcTime
     (year, month, day) = toGregorian date
 
+{-# INLINE list #-}
+list :: (element -> Poking) -> [element] -> Poking
+list element =
+  loop mempty
+  where
+    loop state =
+      \ case
+        head : tail -> loop (state <> word8 1 <> element head) tail
+        _ -> state <> word8 0
diff --git a/ptr.cabal b/ptr.cabal
--- a/ptr.cabal
+++ b/ptr.cabal
@@ -1,7 +1,7 @@
 name:
   ptr
 version:
-  0.16.1
+  0.16.2
 category:
   Ptr, Data
 synopsis:
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -12,6 +12,7 @@
 import qualified Ptr.PokeAndPeek as E
 import qualified Ptr.ByteString as A
 import qualified Ptr.Poking as F
+import qualified Ptr.Parse as G
 import qualified Data.ByteString as D
 
 
@@ -39,6 +40,16 @@
       testCase "asciiUtcTimeInIso8601" $ do
         assertEqual "" "2017-02-01T05:03:58Z" (A.poking (F.asciiUtcTimeInIso8601 (read "2017-02-01 05:03:58")))
     ]
+    ,
+    parsing
+  ]
+
+parsing :: TestTree
+parsing =
+  testGroup "Parsing" $
+  [
+    testCase "" $
+    assertEqual "" "123" (A.parse "123456" (G.bytesWhile (< 52)) undefined undefined)
   ]
 
 pokeThenPeek :: B.Poke a -> C.Peek a -> Maybe (a -> a)
