@@ -32,7 +32,7 @@ module Data.Attoparsec.Text.FastSet
33import Data.Bits ((.|.), (.&.), shiftR)
33import Data.Bits ((.|.), (.&.), shiftR)
34import Data.Function (on)
34import Data.Function (on)
35−import Data.List (sort, sortBy, foldl')
35+import Data.List (sort, sortBy)
36import qualified Data.Array.Base as AB
36import qualified Data.Array.Base as AB
37import qualified Data.Array.Unboxed as A
37import qualified Data.Array.Unboxed as A
38import qualified Data.Text as T
38import qualified Data.Text as T
@@ -92,8 +92,12 @@ fromList s = FastSet (AB.listArray (0, length interleaved - 1) interleaved)
94ordNub :: Eq a => [a] -> [a]
94ordNub :: Eq a => [a] -> [a]
95−ordNub [] = []
95+ordNub [] = []
96−ordNub (x:xs) = foldl' (\ys@(y:_) z -> if y == z then ys else z:ys) [x] xs
96+ordNub (y:ys) = go y ys
99+ | otherwise = x : go z zs
98set :: T.Text -> FastSet
102set :: T.Text -> FastSet
99set = fromList . T.unpack
103set = fromList . T.unpack