@@ -32,7 +32,7 @@ module Data.Attoparsec.Text.FastSet
3232
3333import Data.Bits ((.|.), (.&.), shiftR)
3434import Data.Function (on)
35−import Data.List (sort, sortBy, foldl')
35+import Data.List (sort, sortBy)
3636import qualified Data.Array.Base as AB
3737import qualified Data.Array.Unboxed as A
3838import qualified Data.Text as T
@@ -92,8 +92,12 @@ fromList s = FastSet (AB.listArray (0, length interleaved - 1) interleaved)
9292 entries
9393
9494ordNub :: Eq a => [a] -> [a]
95−ordNub [] = []
96−ordNub (x:xs) = foldl' (\ys@(y:_) z -> if y == z then ys else z:ys) [x] xs
95+ordNub [] = []
96+ordNub (y:ys) = go y ys
97+ where go x (z:zs)
98+ | x == z = go x zs
99+ | otherwise = x : go z zs
100+ go x [] = [x]
97101
98102set :: T.Text -> FastSet
99103set = fromList . T.unpack