Is this idiomatic use of Text.Parsec?

haskell, parsec

Solution

That's fine, I think. A little judicious naming would make it prettier:

category = concat <$> many1 segment
  where
    segment = (:) <$> char '/' <*> many1 (noneOf "/\n")

Problem

My use of `Text.Parsec` is a little rusty. If I just want to return the matched string is this idiomatic? ``` category :: Stream s m Char => ParsecT s u m [Char] category = concat <$> (many1 $ (:) <$> char '/' <*> (many1 $ noneOf "/\n")) ``` I feel like there might be an existing operator for `liftM concat . many1` or `(:) <$> p1 <*> p2` that I'm ignoring, but I'm not sure.

Original source