git.iko.soy/typeable/attoparsec
on master help sign in
Update FastSet.hs
d6564d5SeanRBurton
Data/Attoparsec/Text/FastSet.hs+7−3
@@ -32,7 +32,7 @@ module Data.Attoparsec.Text.FastSet
32
32
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)
92 entries
92 entries
93
93
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
97+ where go x (z:zs)
98+ | x == z = go x zs
99+ | otherwise = x : go z zs
100+ go x [] = [x]
97
101
98set :: T.Text -> FastSet
102set :: T.Text -> FastSet
99set = fromList . T.unpack
103set = fromList . T.unpack