如何在 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
最近,我开始学习使用 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