如何在 Haskell 中进行 运行 秒差距测试?

How to run Parsec test in Haskell?

最近,我开始学习使用 Hackage 库(尤其是 Parsec)实现解析器。到目前为止,我有这段代码来测试整数加法作为简单计算器功能之一:

import Text.Parsec hiding(digit)
import Data.Functor

type Parser a = Parsec String () a

digit :: Parser Char
digit = oneOf ['0'..'9']

number :: Parser Integer
number = read <$> many1 digit

addition = do
    lhv <- number
    spaces
    char '+'
    spaces
    rhv <- number
    return $ lhv + rhv  

由于缺少通过 GHCI 启动此解析器的线索,我有点困惑(我的 OS 是 Windows 10)。我想在命令提示符中输入什么只是为了对其进行一些测试?

您可以使用 Text.Parsec module 中的 parseTest 函数。 GHCI 中的示例会话:

~/g/scripts $ stack ghci parser.hs
GHCi, version 8.6.5: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /home/sibi/.ghci
[1 of 1] Compiling Main             ( /home/sibi/github/scripts/parser.hs, interpreted )
Ok, one module loaded.
Loaded GHCi configuration from /tmp/haskell-stack-ghci/452ad586/ghci-script
λ> :t addition
addition
  :: ParsecT String () Data.Functor.Identity.Identity Integer
λ> :t parseTest
parseTest
  :: (Stream s Data.Functor.Identity.Identity t, Show a) =>
     Parsec s () a -> s -> IO ()
λ> parseTest addition "3 + 2"
5