@@ -26,6 +26,8 @@ import qualified Data.Text as T
2626
2727#if MIN_VERSION_base(4,8,0)
2828import Prelude hiding (Word)
29+#else
30+import Data.Foldable
2931#endif
3032
3133-- | Parse a CamelCase string.
@@ -38,21 +40,23 @@ import Prelude hiding (Word)
3840-- 1:4:
3941-- unexpected '_'
4042-- expecting end of input, lowercase letter, or uppercase letter
41−parseCamelCase
42− :: [Word 'Acronym] -- ^ Collection of acronyms
43+parseCamelCase :: (Foldable f, Functor f)
44+ => f (Word 'Acronym) -- ^ Collection of acronyms
4345 -> Text -- ^ Input
4446 -> Either (ParseError Char Dec) [SomeWord] -- ^ Result of parsing
4547parseCamelCase acronyms = parse (parser acronyms) ""
4648
47−parser
48− :: [Word 'Acronym] -- ^ Collection of acronyms
49+parser :: (Foldable f, Functor f)
50+ => f (Word 'Acronym) -- ^ Collection of acronyms
4951 -> Parser [SomeWord] -- ^ CamelCase parser
5052parser acronyms = many (a <|> n) <* eof
5153 where
5254 n = SomeWord <$> word
5355 a = SomeWord <$> acronym acronyms
5456
55−acronym :: [Word 'Acronym] -> Parser (Word 'Acronym)
57+acronym :: (Foldable f, Functor f)
58+ => f (Word 'Acronym)
59+ -> Parser (Word 'Acronym)
5660acronym acronyms = do
5761 x <- T.pack <$> choice (string . T.unpack . unWord <$> acronyms)
5862 case mkAcronym x of