loop (p `plusPtr` off) (len-1) []
{-# RULES
-"unpack-list" [1] forall p . unpackFoldr p (:) [] = unpackList p
+ "FPS unpack-list" [1] forall p . unpackFoldr p (:) [] = unpackList p
#-}
#endif
{-# RULES
-- v2 fusion
-"length/loop" forall loop s .
+"FPS length/loop" forall loop s .
length (loopArr (loopWrapper loop s)) =
lengthU (loopArr (loopWrapper loop s))
{-# RULES
-"minimum/loop" forall loop s .
+"FPS minimum/loop" forall loop s .
minimum (loopArr (loopWrapper loop s)) =
minimumU (loopArr (loopWrapper loop s))
-"maximum/loop" forall loop s .
+"FPS maximum/loop" forall loop s .
maximum (loopArr (loopWrapper loop s)) =
maximumU (loopArr (loopWrapper loop s))
#if __GLASGOW_HASKELL__ >= 605
{-# RULES
-"FPS specialise filter (== x)" forall x.
- filter (== x) = filterByte x
+ "FPS specialise filter (== x)" forall x.
+ filter (== x) = filterByte x
#-}
#endif
zipWith f ps qs
| null ps || null qs = []
| otherwise = f (unsafeHead ps) (unsafeHead qs) : zipWith f (unsafeTail ps) (unsafeTail qs)
+#if defined(__GLASGOW_HASKELL__)
+{-# INLINE [1] zipWith #-}
+#endif
--
-- | A specialised version of zipWith for the common case of a
"FPS specialise zipWith" forall (f :: Word8 -> Word8 -> Word8) p q .
zipWith f p q = unpack (zipWith' f p q)
+
#-}
-- | /O(n)/ 'unzip' transforms a list of pairs of bytes into a pair of