You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:40:06