Commits

Bryan O'Sullivan committed bbd7a6d

Rename :!: to :*: for consistency with other stream-based packages.

Comments (0)

Files changed (7)

Data/Text/Fusion.hs

 -- | /O(n)/ Perform the equivalent of 'scanr' over a list, only with
 -- the input and result reversed.
 reverseScanr :: (Char -> Char -> Char) -> Char -> Stream Char -> Stream Char
-reverseScanr f z0 (Stream next0 s0 len) = Stream next (S1 :!: z0 :!: s0) (len+1) -- HINT maybe too low
+reverseScanr f z0 (Stream next0 s0 len) = Stream next (S1 :*: z0 :*: s0) (len+1) -- HINT maybe too low
   where
     {-# INLINE next #-}
-    next (S1 :!: z :!: s) = Yield z (S2 :!: z :!: s)
-    next (S2 :!: z :!: s) = case next0 s of
+    next (S1 :*: z :*: s) = Yield z (S2 :*: z :*: s)
+    next (S2 :*: z :*: s) = case next0 s of
                               Yield x s' -> let !x' = f x z
-                                            in Yield x' (S2 :!: x' :!: s')
-                              Skip s'    -> Skip (S2 :!: z :!: s')
+                                            in Yield x' (S2 :*: x' :*: s')
+                              Skip s'    -> Skip (S2 :*: z :*: s')
                               Done       -> Done
 {-# INLINE reverseScanr #-}
 

Data/Text/Fusion/CaseMapping.hs

 upperMapping :: forall s. Char -> s -> Step (PairS (PairS s Char) Char) Char
 {-# INLINE upperMapping #-}
 -- LATIN SMALL LETTER SHARP S
-upperMapping '\x00df' s = Yield '\x0053' (s :!: '\x0053' :!: '\x0000')
+upperMapping '\x00df' s = Yield '\x0053' (s :*: '\x0053' :*: '\x0000')
 -- LATIN SMALL LIGATURE FF
-upperMapping '\xfb00' s = Yield '\x0046' (s :!: '\x0046' :!: '\x0000')
+upperMapping '\xfb00' s = Yield '\x0046' (s :*: '\x0046' :*: '\x0000')
 -- LATIN SMALL LIGATURE FI
-upperMapping '\xfb01' s = Yield '\x0046' (s :!: '\x0049' :!: '\x0000')
+upperMapping '\xfb01' s = Yield '\x0046' (s :*: '\x0049' :*: '\x0000')
 -- LATIN SMALL LIGATURE FL
-upperMapping '\xfb02' s = Yield '\x0046' (s :!: '\x004c' :!: '\x0000')
+upperMapping '\xfb02' s = Yield '\x0046' (s :*: '\x004c' :*: '\x0000')
 -- LATIN SMALL LIGATURE FFI
-upperMapping '\xfb03' s = Yield '\x0046' (s :!: '\x0046' :!: '\x0049')
+upperMapping '\xfb03' s = Yield '\x0046' (s :*: '\x0046' :*: '\x0049')
 -- LATIN SMALL LIGATURE FFL
-upperMapping '\xfb04' s = Yield '\x0046' (s :!: '\x0046' :!: '\x004c')
+upperMapping '\xfb04' s = Yield '\x0046' (s :*: '\x0046' :*: '\x004c')
 -- LATIN SMALL LIGATURE LONG S T
-upperMapping '\xfb05' s = Yield '\x0053' (s :!: '\x0054' :!: '\x0000')
+upperMapping '\xfb05' s = Yield '\x0053' (s :*: '\x0054' :*: '\x0000')
 -- LATIN SMALL LIGATURE ST
-upperMapping '\xfb06' s = Yield '\x0053' (s :!: '\x0054' :!: '\x0000')
+upperMapping '\xfb06' s = Yield '\x0053' (s :*: '\x0054' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE ECH YIWN
-upperMapping '\x0587' s = Yield '\x0535' (s :!: '\x0552' :!: '\x0000')
+upperMapping '\x0587' s = Yield '\x0535' (s :*: '\x0552' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE MEN NOW
-upperMapping '\xfb13' s = Yield '\x0544' (s :!: '\x0546' :!: '\x0000')
+upperMapping '\xfb13' s = Yield '\x0544' (s :*: '\x0546' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE MEN ECH
-upperMapping '\xfb14' s = Yield '\x0544' (s :!: '\x0535' :!: '\x0000')
+upperMapping '\xfb14' s = Yield '\x0544' (s :*: '\x0535' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE MEN INI
-upperMapping '\xfb15' s = Yield '\x0544' (s :!: '\x053b' :!: '\x0000')
+upperMapping '\xfb15' s = Yield '\x0544' (s :*: '\x053b' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE VEW NOW
-upperMapping '\xfb16' s = Yield '\x054e' (s :!: '\x0546' :!: '\x0000')
+upperMapping '\xfb16' s = Yield '\x054e' (s :*: '\x0546' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE MEN XEH
-upperMapping '\xfb17' s = Yield '\x0544' (s :!: '\x053d' :!: '\x0000')
+upperMapping '\xfb17' s = Yield '\x0544' (s :*: '\x053d' :*: '\x0000')
 -- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-upperMapping '\x0149' s = Yield '\x02bc' (s :!: '\x004e' :!: '\x0000')
+upperMapping '\x0149' s = Yield '\x02bc' (s :*: '\x004e' :*: '\x0000')
 -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-upperMapping '\x0390' s = Yield '\x0399' (s :!: '\x0308' :!: '\x0301')
+upperMapping '\x0390' s = Yield '\x0399' (s :*: '\x0308' :*: '\x0301')
 -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-upperMapping '\x03b0' s = Yield '\x03a5' (s :!: '\x0308' :!: '\x0301')
+upperMapping '\x03b0' s = Yield '\x03a5' (s :*: '\x0308' :*: '\x0301')
 -- LATIN SMALL LETTER J WITH CARON
-upperMapping '\x01f0' s = Yield '\x004a' (s :!: '\x030c' :!: '\x0000')
+upperMapping '\x01f0' s = Yield '\x004a' (s :*: '\x030c' :*: '\x0000')
 -- LATIN SMALL LETTER H WITH LINE BELOW
-upperMapping '\x1e96' s = Yield '\x0048' (s :!: '\x0331' :!: '\x0000')
+upperMapping '\x1e96' s = Yield '\x0048' (s :*: '\x0331' :*: '\x0000')
 -- LATIN SMALL LETTER T WITH DIAERESIS
-upperMapping '\x1e97' s = Yield '\x0054' (s :!: '\x0308' :!: '\x0000')
+upperMapping '\x1e97' s = Yield '\x0054' (s :*: '\x0308' :*: '\x0000')
 -- LATIN SMALL LETTER W WITH RING ABOVE
-upperMapping '\x1e98' s = Yield '\x0057' (s :!: '\x030a' :!: '\x0000')
+upperMapping '\x1e98' s = Yield '\x0057' (s :*: '\x030a' :*: '\x0000')
 -- LATIN SMALL LETTER Y WITH RING ABOVE
-upperMapping '\x1e99' s = Yield '\x0059' (s :!: '\x030a' :!: '\x0000')
+upperMapping '\x1e99' s = Yield '\x0059' (s :*: '\x030a' :*: '\x0000')
 -- LATIN SMALL LETTER A WITH RIGHT HALF RING
-upperMapping '\x1e9a' s = Yield '\x0041' (s :!: '\x02be' :!: '\x0000')
+upperMapping '\x1e9a' s = Yield '\x0041' (s :*: '\x02be' :*: '\x0000')
 -- GREEK SMALL LETTER UPSILON WITH PSILI
-upperMapping '\x1f50' s = Yield '\x03a5' (s :!: '\x0313' :!: '\x0000')
+upperMapping '\x1f50' s = Yield '\x03a5' (s :*: '\x0313' :*: '\x0000')
 -- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-upperMapping '\x1f52' s = Yield '\x03a5' (s :!: '\x0313' :!: '\x0300')
+upperMapping '\x1f52' s = Yield '\x03a5' (s :*: '\x0313' :*: '\x0300')
 -- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-upperMapping '\x1f54' s = Yield '\x03a5' (s :!: '\x0313' :!: '\x0301')
+upperMapping '\x1f54' s = Yield '\x03a5' (s :*: '\x0313' :*: '\x0301')
 -- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-upperMapping '\x1f56' s = Yield '\x03a5' (s :!: '\x0313' :!: '\x0342')
+upperMapping '\x1f56' s = Yield '\x03a5' (s :*: '\x0313' :*: '\x0342')
 -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-upperMapping '\x1fb6' s = Yield '\x0391' (s :!: '\x0342' :!: '\x0000')
+upperMapping '\x1fb6' s = Yield '\x0391' (s :*: '\x0342' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH PERISPOMENI
-upperMapping '\x1fc6' s = Yield '\x0397' (s :!: '\x0342' :!: '\x0000')
+upperMapping '\x1fc6' s = Yield '\x0397' (s :*: '\x0342' :*: '\x0000')
 -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-upperMapping '\x1fd2' s = Yield '\x0399' (s :!: '\x0308' :!: '\x0300')
+upperMapping '\x1fd2' s = Yield '\x0399' (s :*: '\x0308' :*: '\x0300')
 -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-upperMapping '\x1fd3' s = Yield '\x0399' (s :!: '\x0308' :!: '\x0301')
+upperMapping '\x1fd3' s = Yield '\x0399' (s :*: '\x0308' :*: '\x0301')
 -- GREEK SMALL LETTER IOTA WITH PERISPOMENI
-upperMapping '\x1fd6' s = Yield '\x0399' (s :!: '\x0342' :!: '\x0000')
+upperMapping '\x1fd6' s = Yield '\x0399' (s :*: '\x0342' :*: '\x0000')
 -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-upperMapping '\x1fd7' s = Yield '\x0399' (s :!: '\x0308' :!: '\x0342')
+upperMapping '\x1fd7' s = Yield '\x0399' (s :*: '\x0308' :*: '\x0342')
 -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-upperMapping '\x1fe2' s = Yield '\x03a5' (s :!: '\x0308' :!: '\x0300')
+upperMapping '\x1fe2' s = Yield '\x03a5' (s :*: '\x0308' :*: '\x0300')
 -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-upperMapping '\x1fe3' s = Yield '\x03a5' (s :!: '\x0308' :!: '\x0301')
+upperMapping '\x1fe3' s = Yield '\x03a5' (s :*: '\x0308' :*: '\x0301')
 -- GREEK SMALL LETTER RHO WITH PSILI
-upperMapping '\x1fe4' s = Yield '\x03a1' (s :!: '\x0313' :!: '\x0000')
+upperMapping '\x1fe4' s = Yield '\x03a1' (s :*: '\x0313' :*: '\x0000')
 -- GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-upperMapping '\x1fe6' s = Yield '\x03a5' (s :!: '\x0342' :!: '\x0000')
+upperMapping '\x1fe6' s = Yield '\x03a5' (s :*: '\x0342' :*: '\x0000')
 -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-upperMapping '\x1fe7' s = Yield '\x03a5' (s :!: '\x0308' :!: '\x0342')
+upperMapping '\x1fe7' s = Yield '\x03a5' (s :*: '\x0308' :*: '\x0342')
 -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-upperMapping '\x1ff6' s = Yield '\x03a9' (s :!: '\x0342' :!: '\x0000')
+upperMapping '\x1ff6' s = Yield '\x03a9' (s :*: '\x0342' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-upperMapping '\x1f80' s = Yield '\x1f08' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f80' s = Yield '\x1f08' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-upperMapping '\x1f81' s = Yield '\x1f09' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f81' s = Yield '\x1f09' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-upperMapping '\x1f82' s = Yield '\x1f0a' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f82' s = Yield '\x1f0a' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-upperMapping '\x1f83' s = Yield '\x1f0b' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f83' s = Yield '\x1f0b' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-upperMapping '\x1f84' s = Yield '\x1f0c' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f84' s = Yield '\x1f0c' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-upperMapping '\x1f85' s = Yield '\x1f0d' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f85' s = Yield '\x1f0d' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-upperMapping '\x1f86' s = Yield '\x1f0e' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f86' s = Yield '\x1f0e' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-upperMapping '\x1f87' s = Yield '\x1f0f' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f87' s = Yield '\x1f0f' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-upperMapping '\x1f88' s = Yield '\x1f08' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f88' s = Yield '\x1f08' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-upperMapping '\x1f89' s = Yield '\x1f09' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f89' s = Yield '\x1f09' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-upperMapping '\x1f8a' s = Yield '\x1f0a' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f8a' s = Yield '\x1f0a' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-upperMapping '\x1f8b' s = Yield '\x1f0b' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f8b' s = Yield '\x1f0b' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-upperMapping '\x1f8c' s = Yield '\x1f0c' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f8c' s = Yield '\x1f0c' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-upperMapping '\x1f8d' s = Yield '\x1f0d' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f8d' s = Yield '\x1f0d' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-upperMapping '\x1f8e' s = Yield '\x1f0e' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f8e' s = Yield '\x1f0e' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-upperMapping '\x1f8f' s = Yield '\x1f0f' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f8f' s = Yield '\x1f0f' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-upperMapping '\x1f90' s = Yield '\x1f28' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f90' s = Yield '\x1f28' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-upperMapping '\x1f91' s = Yield '\x1f29' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f91' s = Yield '\x1f29' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-upperMapping '\x1f92' s = Yield '\x1f2a' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f92' s = Yield '\x1f2a' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-upperMapping '\x1f93' s = Yield '\x1f2b' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f93' s = Yield '\x1f2b' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-upperMapping '\x1f94' s = Yield '\x1f2c' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f94' s = Yield '\x1f2c' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-upperMapping '\x1f95' s = Yield '\x1f2d' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f95' s = Yield '\x1f2d' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-upperMapping '\x1f96' s = Yield '\x1f2e' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f96' s = Yield '\x1f2e' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-upperMapping '\x1f97' s = Yield '\x1f2f' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f97' s = Yield '\x1f2f' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-upperMapping '\x1f98' s = Yield '\x1f28' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f98' s = Yield '\x1f28' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-upperMapping '\x1f99' s = Yield '\x1f29' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f99' s = Yield '\x1f29' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-upperMapping '\x1f9a' s = Yield '\x1f2a' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f9a' s = Yield '\x1f2a' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-upperMapping '\x1f9b' s = Yield '\x1f2b' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f9b' s = Yield '\x1f2b' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-upperMapping '\x1f9c' s = Yield '\x1f2c' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f9c' s = Yield '\x1f2c' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-upperMapping '\x1f9d' s = Yield '\x1f2d' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f9d' s = Yield '\x1f2d' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-upperMapping '\x1f9e' s = Yield '\x1f2e' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f9e' s = Yield '\x1f2e' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-upperMapping '\x1f9f' s = Yield '\x1f2f' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1f9f' s = Yield '\x1f2f' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-upperMapping '\x1fa0' s = Yield '\x1f68' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fa0' s = Yield '\x1f68' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-upperMapping '\x1fa1' s = Yield '\x1f69' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fa1' s = Yield '\x1f69' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-upperMapping '\x1fa2' s = Yield '\x1f6a' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fa2' s = Yield '\x1f6a' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-upperMapping '\x1fa3' s = Yield '\x1f6b' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fa3' s = Yield '\x1f6b' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-upperMapping '\x1fa4' s = Yield '\x1f6c' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fa4' s = Yield '\x1f6c' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-upperMapping '\x1fa5' s = Yield '\x1f6d' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fa5' s = Yield '\x1f6d' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-upperMapping '\x1fa6' s = Yield '\x1f6e' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fa6' s = Yield '\x1f6e' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-upperMapping '\x1fa7' s = Yield '\x1f6f' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fa7' s = Yield '\x1f6f' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-upperMapping '\x1fa8' s = Yield '\x1f68' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fa8' s = Yield '\x1f68' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-upperMapping '\x1fa9' s = Yield '\x1f69' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fa9' s = Yield '\x1f69' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-upperMapping '\x1faa' s = Yield '\x1f6a' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1faa' s = Yield '\x1f6a' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-upperMapping '\x1fab' s = Yield '\x1f6b' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fab' s = Yield '\x1f6b' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-upperMapping '\x1fac' s = Yield '\x1f6c' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fac' s = Yield '\x1f6c' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-upperMapping '\x1fad' s = Yield '\x1f6d' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fad' s = Yield '\x1f6d' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-upperMapping '\x1fae' s = Yield '\x1f6e' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fae' s = Yield '\x1f6e' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-upperMapping '\x1faf' s = Yield '\x1f6f' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1faf' s = Yield '\x1f6f' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-upperMapping '\x1fb3' s = Yield '\x0391' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fb3' s = Yield '\x0391' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-upperMapping '\x1fbc' s = Yield '\x0391' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fbc' s = Yield '\x0391' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-upperMapping '\x1fc3' s = Yield '\x0397' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fc3' s = Yield '\x0397' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-upperMapping '\x1fcc' s = Yield '\x0397' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fcc' s = Yield '\x0397' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-upperMapping '\x1ff3' s = Yield '\x03a9' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1ff3' s = Yield '\x03a9' (s :*: '\x0399' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-upperMapping '\x1ffc' s = Yield '\x03a9' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1ffc' s = Yield '\x03a9' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-upperMapping '\x1fb2' s = Yield '\x1fba' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fb2' s = Yield '\x1fba' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-upperMapping '\x1fb4' s = Yield '\x0386' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fb4' s = Yield '\x0386' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-upperMapping '\x1fc2' s = Yield '\x1fca' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fc2' s = Yield '\x1fca' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-upperMapping '\x1fc4' s = Yield '\x0389' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1fc4' s = Yield '\x0389' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-upperMapping '\x1ff2' s = Yield '\x1ffa' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1ff2' s = Yield '\x1ffa' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-upperMapping '\x1ff4' s = Yield '\x038f' (s :!: '\x0399' :!: '\x0000')
+upperMapping '\x1ff4' s = Yield '\x038f' (s :*: '\x0399' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-upperMapping '\x1fb7' s = Yield '\x0391' (s :!: '\x0342' :!: '\x0399')
+upperMapping '\x1fb7' s = Yield '\x0391' (s :*: '\x0342' :*: '\x0399')
 -- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-upperMapping '\x1fc7' s = Yield '\x0397' (s :!: '\x0342' :!: '\x0399')
+upperMapping '\x1fc7' s = Yield '\x0397' (s :*: '\x0342' :*: '\x0399')
 -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-upperMapping '\x1ff7' s = Yield '\x03a9' (s :!: '\x0342' :!: '\x0399')
-upperMapping c s = Yield (toUpper c) (s :!: '\0' :!: '\0')
+upperMapping '\x1ff7' s = Yield '\x03a9' (s :*: '\x0342' :*: '\x0399')
+upperMapping c s = Yield (toUpper c) (s :*: '\0' :*: '\0')
 lowerMapping :: forall s. Char -> s -> Step (PairS (PairS s Char) Char) Char
 {-# INLINE lowerMapping #-}
 -- LATIN CAPITAL LETTER I WITH DOT ABOVE
-lowerMapping '\x0130' s = Yield '\x0069' (s :!: '\x0307' :!: '\x0000')
-lowerMapping c s = Yield (toLower c) (s :!: '\0' :!: '\0')
+lowerMapping '\x0130' s = Yield '\x0069' (s :*: '\x0307' :*: '\x0000')
+lowerMapping c s = Yield (toLower c) (s :*: '\0' :*: '\0')
 foldMapping :: forall s. Char -> s -> Step (PairS (PairS s Char) Char) Char
 {-# INLINE foldMapping #-}
 -- MICRO SIGN
-foldMapping '\x00b5' s = Yield '\x03bc' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x00b5' s = Yield '\x03bc' (s :*: '\x0000' :*: '\x0000')
 -- LATIN SMALL LETTER SHARP S
-foldMapping '\x00df' s = Yield '\x0073' (s :!: '\x0073' :!: '\x0000')
+foldMapping '\x00df' s = Yield '\x0073' (s :*: '\x0073' :*: '\x0000')
 -- LATIN CAPITAL LETTER I WITH DOT ABOVE
-foldMapping '\x0130' s = Yield '\x0069' (s :!: '\x0307' :!: '\x0000')
+foldMapping '\x0130' s = Yield '\x0069' (s :*: '\x0307' :*: '\x0000')
 -- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-foldMapping '\x0149' s = Yield '\x02bc' (s :!: '\x006e' :!: '\x0000')
+foldMapping '\x0149' s = Yield '\x02bc' (s :*: '\x006e' :*: '\x0000')
 -- LATIN SMALL LETTER LONG S
-foldMapping '\x017f' s = Yield '\x0073' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x017f' s = Yield '\x0073' (s :*: '\x0000' :*: '\x0000')
 -- LATIN SMALL LETTER J WITH CARON
-foldMapping '\x01f0' s = Yield '\x006a' (s :!: '\x030c' :!: '\x0000')
+foldMapping '\x01f0' s = Yield '\x006a' (s :*: '\x030c' :*: '\x0000')
 -- COMBINING GREEK YPOGEGRAMMENI
-foldMapping '\x0345' s = Yield '\x03b9' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x0345' s = Yield '\x03b9' (s :*: '\x0000' :*: '\x0000')
 -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-foldMapping '\x0390' s = Yield '\x03b9' (s :!: '\x0308' :!: '\x0301')
+foldMapping '\x0390' s = Yield '\x03b9' (s :*: '\x0308' :*: '\x0301')
 -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-foldMapping '\x03b0' s = Yield '\x03c5' (s :!: '\x0308' :!: '\x0301')
+foldMapping '\x03b0' s = Yield '\x03c5' (s :*: '\x0308' :*: '\x0301')
 -- GREEK SMALL LETTER FINAL SIGMA
-foldMapping '\x03c2' s = Yield '\x03c3' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x03c2' s = Yield '\x03c3' (s :*: '\x0000' :*: '\x0000')
 -- GREEK BETA SYMBOL
-foldMapping '\x03d0' s = Yield '\x03b2' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x03d0' s = Yield '\x03b2' (s :*: '\x0000' :*: '\x0000')
 -- GREEK THETA SYMBOL
-foldMapping '\x03d1' s = Yield '\x03b8' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x03d1' s = Yield '\x03b8' (s :*: '\x0000' :*: '\x0000')
 -- GREEK PHI SYMBOL
-foldMapping '\x03d5' s = Yield '\x03c6' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x03d5' s = Yield '\x03c6' (s :*: '\x0000' :*: '\x0000')
 -- GREEK PI SYMBOL
-foldMapping '\x03d6' s = Yield '\x03c0' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x03d6' s = Yield '\x03c0' (s :*: '\x0000' :*: '\x0000')
 -- GREEK KAPPA SYMBOL
-foldMapping '\x03f0' s = Yield '\x03ba' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x03f0' s = Yield '\x03ba' (s :*: '\x0000' :*: '\x0000')
 -- GREEK RHO SYMBOL
-foldMapping '\x03f1' s = Yield '\x03c1' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x03f1' s = Yield '\x03c1' (s :*: '\x0000' :*: '\x0000')
 -- GREEK LUNATE EPSILON SYMBOL
-foldMapping '\x03f5' s = Yield '\x03b5' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x03f5' s = Yield '\x03b5' (s :*: '\x0000' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE ECH YIWN
-foldMapping '\x0587' s = Yield '\x0565' (s :!: '\x0582' :!: '\x0000')
+foldMapping '\x0587' s = Yield '\x0565' (s :*: '\x0582' :*: '\x0000')
 -- LATIN SMALL LETTER H WITH LINE BELOW
-foldMapping '\x1e96' s = Yield '\x0068' (s :!: '\x0331' :!: '\x0000')
+foldMapping '\x1e96' s = Yield '\x0068' (s :*: '\x0331' :*: '\x0000')
 -- LATIN SMALL LETTER T WITH DIAERESIS
-foldMapping '\x1e97' s = Yield '\x0074' (s :!: '\x0308' :!: '\x0000')
+foldMapping '\x1e97' s = Yield '\x0074' (s :*: '\x0308' :*: '\x0000')
 -- LATIN SMALL LETTER W WITH RING ABOVE
-foldMapping '\x1e98' s = Yield '\x0077' (s :!: '\x030a' :!: '\x0000')
+foldMapping '\x1e98' s = Yield '\x0077' (s :*: '\x030a' :*: '\x0000')
 -- LATIN SMALL LETTER Y WITH RING ABOVE
-foldMapping '\x1e99' s = Yield '\x0079' (s :!: '\x030a' :!: '\x0000')
+foldMapping '\x1e99' s = Yield '\x0079' (s :*: '\x030a' :*: '\x0000')
 -- LATIN SMALL LETTER A WITH RIGHT HALF RING
-foldMapping '\x1e9a' s = Yield '\x0061' (s :!: '\x02be' :!: '\x0000')
+foldMapping '\x1e9a' s = Yield '\x0061' (s :*: '\x02be' :*: '\x0000')
 -- LATIN SMALL LETTER LONG S WITH DOT ABOVE
-foldMapping '\x1e9b' s = Yield '\x1e61' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x1e9b' s = Yield '\x1e61' (s :*: '\x0000' :*: '\x0000')
 -- LATIN CAPITAL LETTER SHARP S
-foldMapping '\x1e9e' s = Yield '\x0073' (s :!: '\x0073' :!: '\x0000')
+foldMapping '\x1e9e' s = Yield '\x0073' (s :*: '\x0073' :*: '\x0000')
 -- GREEK SMALL LETTER UPSILON WITH PSILI
-foldMapping '\x1f50' s = Yield '\x03c5' (s :!: '\x0313' :!: '\x0000')
+foldMapping '\x1f50' s = Yield '\x03c5' (s :*: '\x0313' :*: '\x0000')
 -- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-foldMapping '\x1f52' s = Yield '\x03c5' (s :!: '\x0313' :!: '\x0300')
+foldMapping '\x1f52' s = Yield '\x03c5' (s :*: '\x0313' :*: '\x0300')
 -- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-foldMapping '\x1f54' s = Yield '\x03c5' (s :!: '\x0313' :!: '\x0301')
+foldMapping '\x1f54' s = Yield '\x03c5' (s :*: '\x0313' :*: '\x0301')
 -- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-foldMapping '\x1f56' s = Yield '\x03c5' (s :!: '\x0313' :!: '\x0342')
+foldMapping '\x1f56' s = Yield '\x03c5' (s :*: '\x0313' :*: '\x0342')
 -- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-foldMapping '\x1f80' s = Yield '\x1f00' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f80' s = Yield '\x1f00' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-foldMapping '\x1f81' s = Yield '\x1f01' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f81' s = Yield '\x1f01' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-foldMapping '\x1f82' s = Yield '\x1f02' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f82' s = Yield '\x1f02' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-foldMapping '\x1f83' s = Yield '\x1f03' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f83' s = Yield '\x1f03' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-foldMapping '\x1f84' s = Yield '\x1f04' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f84' s = Yield '\x1f04' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-foldMapping '\x1f85' s = Yield '\x1f05' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f85' s = Yield '\x1f05' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-foldMapping '\x1f86' s = Yield '\x1f06' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f86' s = Yield '\x1f06' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-foldMapping '\x1f87' s = Yield '\x1f07' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f87' s = Yield '\x1f07' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-foldMapping '\x1f88' s = Yield '\x1f00' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f88' s = Yield '\x1f00' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-foldMapping '\x1f89' s = Yield '\x1f01' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f89' s = Yield '\x1f01' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-foldMapping '\x1f8a' s = Yield '\x1f02' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f8a' s = Yield '\x1f02' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-foldMapping '\x1f8b' s = Yield '\x1f03' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f8b' s = Yield '\x1f03' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-foldMapping '\x1f8c' s = Yield '\x1f04' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f8c' s = Yield '\x1f04' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-foldMapping '\x1f8d' s = Yield '\x1f05' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f8d' s = Yield '\x1f05' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-foldMapping '\x1f8e' s = Yield '\x1f06' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f8e' s = Yield '\x1f06' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-foldMapping '\x1f8f' s = Yield '\x1f07' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f8f' s = Yield '\x1f07' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-foldMapping '\x1f90' s = Yield '\x1f20' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f90' s = Yield '\x1f20' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-foldMapping '\x1f91' s = Yield '\x1f21' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f91' s = Yield '\x1f21' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-foldMapping '\x1f92' s = Yield '\x1f22' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f92' s = Yield '\x1f22' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-foldMapping '\x1f93' s = Yield '\x1f23' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f93' s = Yield '\x1f23' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-foldMapping '\x1f94' s = Yield '\x1f24' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f94' s = Yield '\x1f24' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-foldMapping '\x1f95' s = Yield '\x1f25' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f95' s = Yield '\x1f25' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-foldMapping '\x1f96' s = Yield '\x1f26' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f96' s = Yield '\x1f26' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-foldMapping '\x1f97' s = Yield '\x1f27' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f97' s = Yield '\x1f27' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-foldMapping '\x1f98' s = Yield '\x1f20' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f98' s = Yield '\x1f20' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-foldMapping '\x1f99' s = Yield '\x1f21' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f99' s = Yield '\x1f21' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-foldMapping '\x1f9a' s = Yield '\x1f22' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f9a' s = Yield '\x1f22' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-foldMapping '\x1f9b' s = Yield '\x1f23' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f9b' s = Yield '\x1f23' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-foldMapping '\x1f9c' s = Yield '\x1f24' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f9c' s = Yield '\x1f24' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-foldMapping '\x1f9d' s = Yield '\x1f25' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f9d' s = Yield '\x1f25' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-foldMapping '\x1f9e' s = Yield '\x1f26' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f9e' s = Yield '\x1f26' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-foldMapping '\x1f9f' s = Yield '\x1f27' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1f9f' s = Yield '\x1f27' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-foldMapping '\x1fa0' s = Yield '\x1f60' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fa0' s = Yield '\x1f60' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-foldMapping '\x1fa1' s = Yield '\x1f61' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fa1' s = Yield '\x1f61' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-foldMapping '\x1fa2' s = Yield '\x1f62' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fa2' s = Yield '\x1f62' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-foldMapping '\x1fa3' s = Yield '\x1f63' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fa3' s = Yield '\x1f63' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-foldMapping '\x1fa4' s = Yield '\x1f64' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fa4' s = Yield '\x1f64' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-foldMapping '\x1fa5' s = Yield '\x1f65' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fa5' s = Yield '\x1f65' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-foldMapping '\x1fa6' s = Yield '\x1f66' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fa6' s = Yield '\x1f66' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-foldMapping '\x1fa7' s = Yield '\x1f67' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fa7' s = Yield '\x1f67' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-foldMapping '\x1fa8' s = Yield '\x1f60' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fa8' s = Yield '\x1f60' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-foldMapping '\x1fa9' s = Yield '\x1f61' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fa9' s = Yield '\x1f61' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-foldMapping '\x1faa' s = Yield '\x1f62' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1faa' s = Yield '\x1f62' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-foldMapping '\x1fab' s = Yield '\x1f63' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fab' s = Yield '\x1f63' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-foldMapping '\x1fac' s = Yield '\x1f64' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fac' s = Yield '\x1f64' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-foldMapping '\x1fad' s = Yield '\x1f65' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fad' s = Yield '\x1f65' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-foldMapping '\x1fae' s = Yield '\x1f66' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fae' s = Yield '\x1f66' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-foldMapping '\x1faf' s = Yield '\x1f67' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1faf' s = Yield '\x1f67' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-foldMapping '\x1fb2' s = Yield '\x1f70' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fb2' s = Yield '\x1f70' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-foldMapping '\x1fb3' s = Yield '\x03b1' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fb3' s = Yield '\x03b1' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-foldMapping '\x1fb4' s = Yield '\x03ac' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fb4' s = Yield '\x03ac' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-foldMapping '\x1fb6' s = Yield '\x03b1' (s :!: '\x0342' :!: '\x0000')
+foldMapping '\x1fb6' s = Yield '\x03b1' (s :*: '\x0342' :*: '\x0000')
 -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-foldMapping '\x1fb7' s = Yield '\x03b1' (s :!: '\x0342' :!: '\x03b9')
+foldMapping '\x1fb7' s = Yield '\x03b1' (s :*: '\x0342' :*: '\x03b9')
 -- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-foldMapping '\x1fbc' s = Yield '\x03b1' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fbc' s = Yield '\x03b1' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK PROSGEGRAMMENI
-foldMapping '\x1fbe' s = Yield '\x03b9' (s :!: '\x0000' :!: '\x0000')
+foldMapping '\x1fbe' s = Yield '\x03b9' (s :*: '\x0000' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-foldMapping '\x1fc2' s = Yield '\x1f74' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fc2' s = Yield '\x1f74' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-foldMapping '\x1fc3' s = Yield '\x03b7' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fc3' s = Yield '\x03b7' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-foldMapping '\x1fc4' s = Yield '\x03ae' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fc4' s = Yield '\x03ae' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH PERISPOMENI
-foldMapping '\x1fc6' s = Yield '\x03b7' (s :!: '\x0342' :!: '\x0000')
+foldMapping '\x1fc6' s = Yield '\x03b7' (s :*: '\x0342' :*: '\x0000')
 -- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-foldMapping '\x1fc7' s = Yield '\x03b7' (s :!: '\x0342' :!: '\x03b9')
+foldMapping '\x1fc7' s = Yield '\x03b7' (s :*: '\x0342' :*: '\x03b9')
 -- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-foldMapping '\x1fcc' s = Yield '\x03b7' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1fcc' s = Yield '\x03b7' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-foldMapping '\x1fd2' s = Yield '\x03b9' (s :!: '\x0308' :!: '\x0300')
+foldMapping '\x1fd2' s = Yield '\x03b9' (s :*: '\x0308' :*: '\x0300')
 -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-foldMapping '\x1fd3' s = Yield '\x03b9' (s :!: '\x0308' :!: '\x0301')
+foldMapping '\x1fd3' s = Yield '\x03b9' (s :*: '\x0308' :*: '\x0301')
 -- GREEK SMALL LETTER IOTA WITH PERISPOMENI
-foldMapping '\x1fd6' s = Yield '\x03b9' (s :!: '\x0342' :!: '\x0000')
+foldMapping '\x1fd6' s = Yield '\x03b9' (s :*: '\x0342' :*: '\x0000')
 -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-foldMapping '\x1fd7' s = Yield '\x03b9' (s :!: '\x0308' :!: '\x0342')
+foldMapping '\x1fd7' s = Yield '\x03b9' (s :*: '\x0308' :*: '\x0342')
 -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-foldMapping '\x1fe2' s = Yield '\x03c5' (s :!: '\x0308' :!: '\x0300')
+foldMapping '\x1fe2' s = Yield '\x03c5' (s :*: '\x0308' :*: '\x0300')
 -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-foldMapping '\x1fe3' s = Yield '\x03c5' (s :!: '\x0308' :!: '\x0301')
+foldMapping '\x1fe3' s = Yield '\x03c5' (s :*: '\x0308' :*: '\x0301')
 -- GREEK SMALL LETTER RHO WITH PSILI
-foldMapping '\x1fe4' s = Yield '\x03c1' (s :!: '\x0313' :!: '\x0000')
+foldMapping '\x1fe4' s = Yield '\x03c1' (s :*: '\x0313' :*: '\x0000')
 -- GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-foldMapping '\x1fe6' s = Yield '\x03c5' (s :!: '\x0342' :!: '\x0000')
+foldMapping '\x1fe6' s = Yield '\x03c5' (s :*: '\x0342' :*: '\x0000')
 -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-foldMapping '\x1fe7' s = Yield '\x03c5' (s :!: '\x0308' :!: '\x0342')
+foldMapping '\x1fe7' s = Yield '\x03c5' (s :*: '\x0308' :*: '\x0342')
 -- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-foldMapping '\x1ff2' s = Yield '\x1f7c' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1ff2' s = Yield '\x1f7c' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-foldMapping '\x1ff3' s = Yield '\x03c9' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1ff3' s = Yield '\x03c9' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-foldMapping '\x1ff4' s = Yield '\x03ce' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1ff4' s = Yield '\x03ce' (s :*: '\x03b9' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-foldMapping '\x1ff6' s = Yield '\x03c9' (s :!: '\x0342' :!: '\x0000')
+foldMapping '\x1ff6' s = Yield '\x03c9' (s :*: '\x0342' :*: '\x0000')
 -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-foldMapping '\x1ff7' s = Yield '\x03c9' (s :!: '\x0342' :!: '\x03b9')
+foldMapping '\x1ff7' s = Yield '\x03c9' (s :*: '\x0342' :*: '\x03b9')
 -- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-foldMapping '\x1ffc' s = Yield '\x03c9' (s :!: '\x03b9' :!: '\x0000')
+foldMapping '\x1ffc' s = Yield '\x03c9' (s :*: '\x03b9' :*: '\x0000')
 -- LATIN SMALL LIGATURE FF
-foldMapping '\xfb00' s = Yield '\x0066' (s :!: '\x0066' :!: '\x0000')
+foldMapping '\xfb00' s = Yield '\x0066' (s :*: '\x0066' :*: '\x0000')
 -- LATIN SMALL LIGATURE FI
-foldMapping '\xfb01' s = Yield '\x0066' (s :!: '\x0069' :!: '\x0000')
+foldMapping '\xfb01' s = Yield '\x0066' (s :*: '\x0069' :*: '\x0000')
 -- LATIN SMALL LIGATURE FL
-foldMapping '\xfb02' s = Yield '\x0066' (s :!: '\x006c' :!: '\x0000')
+foldMapping '\xfb02' s = Yield '\x0066' (s :*: '\x006c' :*: '\x0000')
 -- LATIN SMALL LIGATURE FFI
-foldMapping '\xfb03' s = Yield '\x0066' (s :!: '\x0066' :!: '\x0069')
+foldMapping '\xfb03' s = Yield '\x0066' (s :*: '\x0066' :*: '\x0069')
 -- LATIN SMALL LIGATURE FFL
-foldMapping '\xfb04' s = Yield '\x0066' (s :!: '\x0066' :!: '\x006c')
+foldMapping '\xfb04' s = Yield '\x0066' (s :*: '\x0066' :*: '\x006c')
 -- LATIN SMALL LIGATURE LONG S T
-foldMapping '\xfb05' s = Yield '\x0073' (s :!: '\x0074' :!: '\x0000')
+foldMapping '\xfb05' s = Yield '\x0073' (s :*: '\x0074' :*: '\x0000')
 -- LATIN SMALL LIGATURE ST
-foldMapping '\xfb06' s = Yield '\x0073' (s :!: '\x0074' :!: '\x0000')
+foldMapping '\xfb06' s = Yield '\x0073' (s :*: '\x0074' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE MEN NOW
-foldMapping '\xfb13' s = Yield '\x0574' (s :!: '\x0576' :!: '\x0000')
+foldMapping '\xfb13' s = Yield '\x0574' (s :*: '\x0576' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE MEN ECH
-foldMapping '\xfb14' s = Yield '\x0574' (s :!: '\x0565' :!: '\x0000')
+foldMapping '\xfb14' s = Yield '\x0574' (s :*: '\x0565' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE MEN INI
-foldMapping '\xfb15' s = Yield '\x0574' (s :!: '\x056b' :!: '\x0000')
+foldMapping '\xfb15' s = Yield '\x0574' (s :*: '\x056b' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE VEW NOW
-foldMapping '\xfb16' s = Yield '\x057e' (s :!: '\x0576' :!: '\x0000')
+foldMapping '\xfb16' s = Yield '\x057e' (s :*: '\x0576' :*: '\x0000')
 -- ARMENIAN SMALL LIGATURE MEN XEH
-foldMapping '\xfb17' s = Yield '\x0574' (s :!: '\x056d' :!: '\x0000')
-foldMapping c s = Yield (toLower c) (s :!: '\0' :!: '\0')
+foldMapping '\xfb17' s = Yield '\x0574' (s :*: '\x056d' :*: '\x0000')
+foldMapping c s = Yield (toLower c) (s :*: '\0' :*: '\0')

Data/Text/Fusion/Common.hs

 
 -- | /O(n)/ Adds a character to the front of a Stream Char.
 cons :: Char -> Stream Char -> Stream Char
-cons w (Stream next0 s0 len) = Stream next (S2 :!: s0) (len+1)
+cons w (Stream next0 s0 len) = Stream next (S2 :*: s0) (len+1)
     where
       {-# INLINE next #-}
-      next (S2 :!: s) = Yield w (S1 :!: s)
-      next (S1 :!: s) = case next0 s of
+      next (S2 :*: s) = Yield w (S1 :*: s)
+      next (S1 :*: s) = case next0 s of
                           Done -> Done
-                          Skip s' -> Skip (S1 :!: s')
-                          Yield x s' -> Yield x (S1 :!: s')
+                          Skip s' -> Skip (S1 :*: s')
+                          Yield x s' -> Yield x (S1 :*: s')
 {-# INLINE [0] cons #-}
 
 -- | /O(n)/ Adds a character to the end of a stream.
 -- | /O(1)/ Returns all characters after the head of a Stream Char, which must
 -- be non-empty.
 tail :: Stream Char -> Stream Char
-tail (Stream next0 s0 len) = Stream next (False :!: s0) (len-1)
+tail (Stream next0 s0 len) = Stream next (False :*: s0) (len-1)
     where
       {-# INLINE next #-}
-      next (False :!: s) = case next0 s of
+      next (False :*: s) = case next0 s of
                           Done       -> emptyError "tail"
-                          Skip s'    -> Skip (False :!: s')
-                          Yield _ s' -> Skip (True :!: s')
-      next (True :!: s) = case next0 s of
+                          Skip s'    -> Skip (False :*: s')
+                          Yield _ s' -> Skip (True :*: s')
+      next (True :*: s) = case next0 s of
                           Done       -> Done
-                          Skip s'    -> Skip    (True :!: s')
-                          Yield x s' -> Yield x (True :!: s')
+                          Skip s'    -> Skip    (True :*: s')
+                          Yield x s' -> Yield x (True :*: s')
 {-# INLINE [0] tail #-}
 
 
 -- | /O(1)/ Returns all but the last character of a Stream Char, which
 -- must be non-empty.
 init :: Stream Char -> Stream Char
-init (Stream next0 s0 len) = Stream next (N :!: s0) (len-1)
+init (Stream next0 s0 len) = Stream next (N :*: s0) (len-1)
     where
       {-# INLINE next #-}
-      next (N :!: s) = case next0 s of
+      next (N :*: s) = case next0 s of
                          Done       -> emptyError "init"
-                         Skip s'    -> Skip (N :!: s')
-                         Yield x s' -> Skip (J x  :!: s')
-      next (J x :!: s)  = case next0 s of
+                         Skip s'    -> Skip (N :*: s')
+                         Yield x s' -> Skip (J x  :*: s')
+      next (J x :*: s)  = case next0 s of
                             Done        -> Done
-                            Skip s'     -> Skip    (J x  :!: s')
-                            Yield x' s' -> Yield x (J x' :!: s')
+                            Skip s'     -> Skip    (J x  :*: s')
+                            Yield x' s' -> Yield x (J x' :*: s')
 {-# INLINE [0] init #-}
 
 -- | /O(1)/ Tests whether a Stream Char is empty or not.
 -- | /O(n)/ Take a character and place it between each of the
 -- characters of a 'Stream Char'.
 intersperse :: Char -> Stream Char -> Stream Char
-intersperse c (Stream next0 s0 len) = Stream next (s0 :!: N :!: S1) len
+intersperse c (Stream next0 s0 len) = Stream next (s0 :*: N :*: S1) len
     where
       {-# INLINE next #-}
-      next (s :!: N :!: S1) = case next0 s of
+      next (s :*: N :*: S1) = case next0 s of
         Done       -> Done
-        Skip s'    -> Skip (s' :!: N :!: S1)
-        Yield x s' -> Skip (s' :!: J x :!: S1)
-      next (s :!: J x :!: S1)  = Yield x (s :!: N :!: S2)
-      next (s :!: N :!: S2) = case next0 s of
+        Skip s'    -> Skip (s' :*: N :*: S1)
+        Yield x s' -> Skip (s' :*: J x :*: S1)
+      next (s :*: J x :*: S1)  = Yield x (s :*: N :*: S2)
+      next (s :*: N :*: S2) = case next0 s of
         Done       -> Done
-        Skip s'    -> Skip    (s' :!: N :!: S2)
-        Yield x s' -> Yield c (s' :!: J x :!: S1)
+        Skip s'    -> Skip    (s' :*: N :*: S2)
+        Yield x s' -> Yield c (s' :*: J x :*: S1)
       next _ = internalError "intersperse"
 {-# INLINE [0] intersperse #-}
 
 
 caseConvert :: (forall s. Char -> s -> Step (PairS (PairS s Char) Char) Char)
             -> Stream Char -> Stream Char
-caseConvert remap (Stream next0 s0 len) = Stream next (s0 :!: '\0' :!: '\0') len
+caseConvert remap (Stream next0 s0 len) = Stream next (s0 :*: '\0' :*: '\0') len
   where
     {-# INLINE next #-}
-    next (s :!: '\0' :!: _) =
+    next (s :*: '\0' :*: _) =
         case next0 s of
           Done       -> Done
-          Skip s'    -> Skip (s' :!: '\0' :!: '\0')
+          Skip s'    -> Skip (s' :*: '\0' :*: '\0')
           Yield c s' -> remap c s'
-    next (s :!: a :!: b) = Yield a (s :!: b :!: '\0')
+    next (s :*: a :*: b) = Yield a (s :*: b :*: '\0')
 
 -- | /O(n)/ Convert a string to folded case.  This function is mainly
 -- useful for performing caseless (or case insensitive) string
 
 justifyLeftI :: Integral a => a -> Char -> Stream Char -> Stream Char
 justifyLeftI k c (Stream next0 s0 len) =
-    Stream next (s0 :!: S1 :!: 0) (larger (fromIntegral k) len)
+    Stream next (s0 :*: S1 :*: 0) (larger (fromIntegral k) len)
   where
-    next (s :!: S1 :!: n) =
+    next (s :*: S1 :*: n) =
         case next0 s of
-          Done       -> next (s :!: S2 :!: n)
-          Skip s'    -> Skip (s' :!: S1 :!: n)
-          Yield x s' -> Yield x (s' :!: S1 :!: n+1)
-    next (s :!: S2 :!: n)
-        | n < k       = Yield c (s :!: S2 :!: n+1)
+          Done       -> next (s :*: S2 :*: n)
+          Skip s'    -> Skip (s' :*: S1 :*: n)
+          Yield x s' -> Yield x (s' :*: S1 :*: n+1)
+    next (s :*: S2 :*: n)
+        | n < k       = Yield c (s :*: S2 :*: n+1)
         | otherwise   = Done
     {-# INLINE next #-}
 {-# INLINE [0] justifyLeftI #-}
 -- * Building streams
 
 scanl :: (Char -> Char -> Char) -> Char -> Stream Char -> Stream Char
-scanl f z0 (Stream next0 s0 len) = Stream next (S1 :!: z0 :!: s0) (len+1) -- HINT maybe too low
+scanl f z0 (Stream next0 s0 len) = Stream next (S1 :*: z0 :*: s0) (len+1) -- HINT maybe too low
   where
     {-# INLINE next #-}
-    next (S1 :!: z :!: s) = Yield z (S2 :!: z :!: s)
-    next (S2 :!: z :!: s) = case next0 s of
+    next (S1 :*: z :*: s) = Yield z (S2 :*: z :*: s)
+    next (S2 :*: z :*: s) = case next0 s of
                               Yield x s' -> let !x' = f z x
-                                            in Yield x' (S2 :!: x' :!: s')
-                              Skip s'    -> Skip (S2 :!: z :!: s')
+                                            in Yield x' (S2 :*: x' :*: s')
+                              Skip s'    -> Skip (S2 :*: z :*: s')
                               Done       -> Done
 {-# INLINE [0] scanl #-}
 
 -- return a final value for the accumulator, because the nature of
 -- streams precludes it.
 mapAccumL :: (a -> b -> (a,b)) -> a -> Stream b -> Stream b
-mapAccumL f z0 (Stream next0 s0 len) = Stream next (s0 :!: z0) len -- HINT depends on f
+mapAccumL f z0 (Stream next0 s0 len) = Stream next (s0 :*: z0) len -- HINT depends on f
   where
     {-# INLINE next #-}
-    next (s :!: z) = case next0 s of
+    next (s :*: z) = case next0 s of
                        Yield x s' -> let (z',y) = f z x
-                                     in Yield y (s' :!: z')
-                       Skip s'    -> Skip (s' :!: z)
+                                     in Yield y (s' :*: z')
+                       Skip s'    -> Skip (s' :*: z)
                        Done       -> Done
 {-# INLINE [0] mapAccumL #-}
 -}
 
 replicateI :: Int64 -> Stream Char -> Stream Char
 replicateI n (Stream next0 s0 len) =
-    Stream next (0 :!: s0) (fromIntegral (max 0 n) * len)
+    Stream next (0 :*: s0) (fromIntegral (max 0 n) * len)
   where
-    next (k :!: s)
+    next (k :*: s)
         | k >= n = Done
         | otherwise = case next0 s of
-                        Done       -> Skip    (k+1 :!: s0)
-                        Skip s'    -> Skip    (k :!: s')
-                        Yield x s' -> Yield x (k :!: s')
+                        Done       -> Skip    (k+1 :*: s0)
+                        Skip s'    -> Skip    (k :*: s')
+                        Yield x s' -> Yield x (k :*: s')
 {-# INLINE [0] replicateI #-}
 
 -- | /O(n)/, where @n@ is the length of the result. The unfoldr function
 -- 'unfoldr' when the length of the result is known.
 unfoldrNI :: Integral a => a -> (b -> Maybe (Char,b)) -> b -> Stream Char
 unfoldrNI n f s0 | n <  0    = empty
-                 | otherwise = Stream next (0 :!: s0) (fromIntegral (n*2)) -- HINT maybe too high
+                 | otherwise = Stream next (0 :*: s0) (fromIntegral (n*2)) -- HINT maybe too high
     where
       {-# INLINE next #-}
-      next (z :!: s) = case f s of
+      next (z :*: s) = case f s of
           Nothing                  -> Done
           Just (w, s') | z >= n    -> Done
-                       | otherwise -> Yield w ((z + 1) :!: s')
+                       | otherwise -> Yield w ((z + 1) :*: s')
 {-# INLINE unfoldrNI #-}
 
 -------------------------------------------------------------------------------
 -- length of the stream.
 take :: Integral a => a -> Stream Char -> Stream Char
 take n0 (Stream next0 s0 len) =
-    Stream next (n0 :!: s0) (smaller len (fromIntegral (max 0 n0)))
+    Stream next (n0 :*: s0) (smaller len (fromIntegral (max 0 n0)))
     where
       {-# INLINE next #-}
-      next (n :!: s) | n <= 0    = Done
+      next (n :*: s) | n <= 0    = Done
                      | otherwise = case next0 s of
                                      Done -> Done
-                                     Skip s' -> Skip (n :!: s')
-                                     Yield x s' -> Yield x ((n-1) :!: s')
+                                     Skip s' -> Skip (n :*: s')
+                                     Yield x s' -> Yield x ((n-1) :*: s')
 {-# INLINE [0] take #-}
 
 -- | /O(n)/ drop n, applied to a stream, returns the suffix of the
 -- length of the stream.
 drop :: Integral a => a -> Stream Char -> Stream Char
 drop n0 (Stream next0 s0 len) =
-    Stream next (J n0 :!: s0) (len - fromIntegral (max 0 n0))
+    Stream next (J n0 :*: s0) (len - fromIntegral (max 0 n0))
   where
     {-# INLINE next #-}
-    next (J n :!: s)
-      | n <= 0    = Skip (N :!: s)
+    next (J n :*: s)
+      | n <= 0    = Skip (N :*: s)
       | otherwise = case next0 s of
           Done       -> Done
-          Skip    s' -> Skip (J n    :!: s')
-          Yield _ s' -> Skip (J (n-1) :!: s')
-    next (N :!: s) = case next0 s of
+          Skip    s' -> Skip (J n    :*: s')
+          Yield _ s' -> Skip (J (n-1) :*: s')
+    next (N :*: s) = case next0 s of
       Done       -> Done
-      Skip    s' -> Skip    (N :!: s')
-      Yield x s' -> Yield x (N :!: s')
+      Skip    s' -> Skip    (N :*: s')
+      Yield x s' -> Yield x (N :*: s')
 {-# INLINE [0] drop #-}
 
 -- | takeWhile, applied to a predicate @p@ and a stream, returns the
 
 -- | dropWhile @p @xs returns the suffix remaining after takeWhile @p @xs.
 dropWhile :: (Char -> Bool) -> Stream Char -> Stream Char
-dropWhile p (Stream next0 s0 len) = Stream next (S1 :!: s0) len -- HINT maybe too high
+dropWhile p (Stream next0 s0 len) = Stream next (S1 :*: s0) len -- HINT maybe too high
     where
     {-# INLINE next #-}
-    next (S1 :!: s)  = case next0 s of
+    next (S1 :*: s)  = case next0 s of
       Done                   -> Done
-      Skip    s'             -> Skip    (S1 :!: s')
-      Yield x s' | p x       -> Skip    (S1 :!: s')
-                 | otherwise -> Yield x (S2 :!: s')
-    next (S2 :!: s) = case next0 s of
+      Skip    s'             -> Skip    (S1 :*: s')
+      Yield x s' | p x       -> Skip    (S1 :*: s')
+                 | otherwise -> Yield x (S2 :*: s')
+    next (S2 :*: s) = case next0 s of
       Done       -> Done
-      Skip    s' -> Skip    (S2 :!: s')
-      Yield x s' -> Yield x (S2 :!: s')
+      Skip    s' -> Skip    (S2 :*: s')
+      Yield x s' -> Yield x (S2 :*: s')
 {-# INLINE [0] dropWhile #-}
 
 -- | /O(n)/ The 'isPrefixOf' function takes two 'Stream's and returns
 -- the first argument, instead of a tupling function.
 zipWith :: (a -> a -> b) -> Stream a -> Stream a -> Stream b
 zipWith f (Stream next0 sa0 len1) (Stream next1 sb0 len2) =
-    Stream next (sa0 :!: sb0 :!: N) (smaller len1 len2)
+    Stream next (sa0 :*: sb0 :*: N) (smaller len1 len2)
     where
       {-# INLINE next #-}
-      next (sa :!: sb :!: N) = case next0 sa of
+      next (sa :*: sb :*: N) = case next0 sa of
                                  Done -> Done
-                                 Skip sa' -> Skip (sa' :!: sb :!: N)
-                                 Yield a sa' -> Skip (sa' :!: sb :!: J a)
+                                 Skip sa' -> Skip (sa' :*: sb :*: N)
+                                 Yield a sa' -> Skip (sa' :*: sb :*: J a)
 
-      next (sa' :!: sb :!: J a) = case next1 sb of
+      next (sa' :*: sb :*: J a) = case next1 sb of
                                     Done -> Done
-                                    Skip sb' -> Skip (sa' :!: sb' :!: J a)
-                                    Yield b sb' -> Yield (f a b) (sa' :!: sb' :!: N)
+                                    Skip sb' -> Skip (sa' :*: sb' :*: J a)
+                                    Yield b sb' -> Yield (f a b) (sa' :*: sb' :*: N)
 {-# INLINE [0] zipWith #-}
 
 -- | /O(n)/ The 'countCharI' function returns the number of times the

Data/Text/Fusion/Internal.hs

 data S s = S {-# UNPACK #-} !s
     {-# UNPACK #-} !M8 {-# UNPACK #-} !M8 {-# UNPACK #-} !M8
 
-infixl 2 :!:
-data PairS a b = !a :!: !b
+infixl 2 :*:
+data PairS a b = {-# UNPACK #-} !a :*: {-# UNPACK #-} !b
 
 -- | Allow a function over a stream to switch between two states.
 data Switch = S1 | S2

Data/Text/Lazy/Encoding/Fusion.hs

 -- | /O(n)/ Convert a lazy 'ByteString' into a 'Stream Char', using
 -- UTF-8 encoding.
 streamUtf8 :: OnDecodeError -> ByteString -> Stream Char
-streamUtf8 onErr bs0 = Stream next (bs0 :!: empty :!: 0) unknownSize
+streamUtf8 onErr bs0 = Stream next (bs0 :*: empty :*: 0) unknownSize
     where
       empty = S N N N N
       {-# INLINE next #-}
-      next (bs@(Chunk ps _) :!: S N _ _ _ :!: i)
+      next (bs@(Chunk ps _) :*: S N _ _ _ :*: i)
           | i < len && U8.validate1 a =
-              Yield (unsafeChr8 a) (bs :!: empty :!: i+1)
+              Yield (unsafeChr8 a) (bs :*: empty :*: i+1)
           | i + 1 < len && U8.validate2 a b =
-              Yield (U8.chr2 a b) (bs :!: empty :!: i+2)
+              Yield (U8.chr2 a b) (bs :*: empty :*: i+2)
           | i + 2 < len && U8.validate3 a b c =
-              Yield (U8.chr3 a b c) (bs :!: empty :!: i+3)
+              Yield (U8.chr3 a b c) (bs :*: empty :*: i+3)
           | i + 4 < len && U8.validate4 a b c d =
-              Yield (U8.chr4 a b c d) (bs :!: empty :!: i+4)
+              Yield (U8.chr4 a b c d) (bs :*: empty :*: i+4)
           where len = B.length ps
                 a = B.unsafeIndex ps i
                 b = B.unsafeIndex ps (i+1)
                 c = B.unsafeIndex ps (i+2)
                 d = B.unsafeIndex ps (i+3)
-      next st@(bs :!: s :!: i) =
+      next st@(bs :*: s :*: i) =
         case s of
           S (J a) N _ _             | U8.validate1 a ->
             Yield (unsafeChr8 a) es
           S (J a) (J b) (J c) (J d) | U8.validate4 a b c d ->
             Yield (U8.chr4 a b c d) es
           _ -> consume st
-         where es = bs :!: empty :!: i
+         where es = bs :*: empty :*: i
       {-# INLINE consume #-}
-      consume (bs@(Chunk ps rest) :!: s :!: i)
-          | i >= B.length ps = consume (rest :!: s  :!: 0)
+      consume (bs@(Chunk ps rest) :*: s :*: i)
+          | i >= B.length ps = consume (rest :*: s  :*: 0)
           | otherwise =
         case s of
-          S N _ _ _ -> next (bs :!: S x N N N :!: i+1)
-          S a N _ _ -> next (bs :!: S a x N N :!: i+1)
-          S a b N _ -> next (bs :!: S a b x N :!: i+1)
-          S a b c N -> next (bs :!: S a b c x :!: i+1)
+          S N _ _ _ -> next (bs :*: S x N N N :*: i+1)
+          S a N _ _ -> next (bs :*: S a x N N :*: i+1)
+          S a b N _ -> next (bs :*: S a b x N :*: i+1)
+          S a b c N -> next (bs :*: S a b c x :*: i+1)
           S (J a) b c d -> decodeError "streamUtf8" "UTF-8" onErr (Just a)
-                           (bs :!: S b c d N :!: i+1)
+                           (bs :*: S b c d N :*: i+1)
           where x = J (B.unsafeIndex ps i)
-      consume (Empty :!: S N _ _ _ :!: _) = Done
+      consume (Empty :*: S N _ _ _ :*: _) = Done
       consume st = decodeError "streamUtf8" "UTF-8" onErr Nothing st
 {-# INLINE [0] streamUtf8 #-}
 

Data/Text/Lazy/Fusion.hs

 
 -- | /O(n)/ Convert a 'Text' into a 'Stream Char'.
 stream :: Text -> Stream Char
-stream text = Stream next (text :!: 0) 4 -- random HINT
+stream text = Stream next (text :*: 0) 4 -- random HINT
   where
-    next (Empty :!: _) = Done
-    next (txt@(Chunk t@(I.Text _ _ len) ts) :!: i)
-        | i >= len  = next (ts :!: 0)
-        | otherwise = Yield c (txt :!: i+d)
+    next (Empty :*: _) = Done
+    next (txt@(Chunk t@(I.Text _ _ len) ts) :*: i)
+        | i >= len  = next (ts :*: 0)
+        | otherwise = Yield c (txt :*: i+d)
         where (c,d) = iter t i
 {-# INLINE [0] stream #-}
 

Data/Text/Search.hs

 import qualified Data.Text.Array as A
 import Data.Word (Word64)
 import Data.Text.Internal (Text(..))
+import Data.Text.Fusion.Internal (PairS(..))
 import Data.Bits ((.|.), (.&.))
 import Data.Text.UnsafeShift (shiftL)
 
     z        = nindex nlast
     nindex k = A.unsafeIndex narr (noff+k)
     hindex k = A.unsafeIndex harr (hoff+k)
-    (mask :: Word64, skip) = buildTable 0 0 (nlen-2)
+    (mask :: Word64) :*: skip  = buildTable 0 0 (nlen-2)
     buildTable !i !msk !skp
-        | i >= nlast           = (msk .|. swizzle z, skp)
+        | i >= nlast           = (msk .|. swizzle z) :*: skp
         | otherwise            = buildTable (i+1) (msk .|. swizzle c) skp'
         where c                = nindex i
               skp' | c == z    = nlen - i - 2
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.