将三个连续数字解析为字符串的惯用方式是什么?
以下工作,但不能扩展:
threeDigits :: Parser Int
threeDigits = do
d1 <- digit
d2 <- digit
d3 <- digit
return (digitToInt d1 * 100 + digitToInt d2 * 10 + digitToInt d3)
更一般地说,这如何扩展到 N 个数字?
将三个连续数字解析为字符串的惯用方式是什么?
以下工作,但不能扩展:
threeDigits :: Parser Int
threeDigits = do
d1 <- digit
d2 <- digit
d3 <- digit
return (digitToInt d1 * 100 + digitToInt d2 * 10 + digitToInt d3)
更一般地说,这如何扩展到 N 个数字?
使用count
.
digits :: Int -> Parser Int
digits n = read <$> count n digit