[Haskell-cafe] Attoparsec: Limiting Parsers to N Bytes, or Combing Parsers?

Michael Craig mkscrg at gmail.com
Sat Sep 24 05:04:57 CEST 2011

Suppose we want to parse a 24-bit hex color value:

input :: ByteString
input = "af093c blah blah blah"

type Color = (Word8, Word8, Word8)

Attoparsec.Char8 exports a nice hexadecimal parser, but it consumes all
available hex-flavored input. I'd like to make it consume exactly two bytes,
so I could write my color parser like this:

color :: Parser Color
color = do
    r <- hex2
    g <- hex2
    b <- hex2
    return $ Color (r, g, b)

hex2 :: Parser Word8
hex2 = ???

So my question is "how do I write hex2?" I could easily rewrite hexadecimal,
but it would be nicer to reuse its hex-handling logic.

Mike S Craig
(908) 328 8030
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110923/550417a9/attachment.htm>

More information about the Haskell-Cafe mailing list