<div>Suppose we want to parse a 24-bit hex color value:</div><div><br></div><div>input :: ByteString</div><div>input = &quot;af093c blah blah blah&quot;</div><div><br></div><div>type Color = (Word8, Word8, Word8)</div><div>

<br></div><div><br></div><div>Attoparsec.Char8 exports a nice hexadecimal parser, but it consumes all available hex-flavored input. I&#39;d like to make it consume exactly two bytes, so I could write my color parser like this:</div>

<div><br></div><div><br></div><div>color :: Parser Color</div><div>color = do</div><div>    r &lt;- hex2</div><div>    g &lt;- hex2</div><div>    b &lt;- hex2</div><div>    return $ Color (r, g, b)</div><div><br></div><div>

hex2 :: Parser Word8</div><div>hex2 = ???</div><div><br></div><div><br></div><div>So my question is &quot;how do I write hex2?&quot; I could easily rewrite hexadecimal, but it would be nicer to reuse its hex-handling logic.</div>

<div><br></div>Best,<br clear="all">Mike S Craig<br>(908) 328 8030<br>