Haskell解释器测试求助:WinGHCi运行poly项目后不知如何测试
测试《Write You a Haskell》第7章poly解释器(WinGHCi环境)
1. 加载项目源码
确保WinGHCi当前工作目录是poly项目根目录,在GHCi提示符下执行:
:load Main.hs
如果加载时出现语法扩展相关错误,先启用必要的扩展(比如项目依赖FlexibleContexts):
:set -XFlexibleContexts :load Main.hs
GHCi会自动加载所有依赖模块(如Parser.hs、Syntax.hs),加载成功后会显示模块中的可用函数。
2. 启动交互式解释器测试
加载完成后,直接调用主函数进入poly的交互模式:
main
此时可以输入书中第7章的示例表达式验证功能:
- 基础运算:
1 + 2 * 3 - 变量绑定:
let x = 10 in x * 2 - 多态函数:
let id = \x -> x in id "hello"
3. 手动编写测试用例验证逻辑
如果项目没有自带测试套件,你可以在GHCi中直接编写测试函数,验证求值器、解析器的正确性:
-- 示例:测试解析器能否正确解析加法表达式 testParse = parseExpr "1 + 2" == Right (Add (Lit 1) (Lit 2)) -- 示例:测试求值器计算结果 testEval = eval (Add (Lit 1) (Lit 2)) == Lit 3 -- 执行测试 testParse testEval
注意:parseExpr、eval、Add、Lit都是项目源码中定义的标识符,要和实际代码保持一致。
4. 测试错误处理场景
验证解释器的错误提示是否正常:
- 输入未绑定变量:
x + 5(未提前用let定义x) - 输入语法错误的表达式:
1 + * 2 - 类型不匹配的操作(如果项目实现了类型检查):
"hello" + 5
内容的提问来源于stack exchange,提问作者Davus
相关产品推荐
相关产品推荐

