解析 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
将三个连续数字解析为字符串的惯用方法是什么?
以下有效,但无法缩放:
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