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

时间:2017-12-16 07:39:20

标签: parsing haskell refactoring trifecta

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

以下有效,但无法扩展:

threeDigits :: Parser Int
threeDigits = do
    d1 <- digit
    d2 <- digit
    d3 <- digit
    return (digitToInt d1 * 100 + digitToInt d2 * 10 + digitToInt d3)

更一般地说,如何对N个数字进行缩放?

1 个答案:

答案 0 :(得分:1)

使用count

digits :: Int -> Parser Int
digits n = read <$> count n digit