解析 Haskell 中的三位数字的最简洁方法 (Trifecta)

Most concise way to parse a three-digit number in Haskell (Trifecta)

将三个连续数字解析为字符串的惯用方法是什么?

以下有效,但无法缩放:

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