gpt4 book ai didi

haskell - 我如何轻松地表达我不关心特定数据字段的值?

转载 作者:行者123 更新时间:2023-12-02 03:32:15 25 4
gpt4 key购买 nike

我正在为我的解析器编写测试,使用的方法可能不是最好的,但到目前为止一直对我有用。测试假设每个代码块都完美定义了 AST 表示,如下所示:

(parse "x = 5") `shouldBe` (Block [Assignment [LVar "x"] [Number 5.0]])

然而,当我转向更复杂的案例时,出现了对更“模糊”验证的需求:

(parse "t.x = 5") `shouldBe` (Block [Assignment [LFieldRef (Var "t") (StringLiteral undefined "x")] [Number 5.0]])

我在这个例子中放入了 undefined 来展示我不想与解析结果进行比较的字段(它是字符串文字的源位置)。现在,我看到的唯一修复方法是重写代码以使用 shouldSatisfy 而不是 shouldBe,如果我找不到,我将不得不这样做任何其他解决方案。

最佳答案

您可以编写一个 normalizePosition 函数,用一些固定的 dummyPosition 值替换 AST 中的所有位置数据,然后使用 shouldBe从相同的虚拟值构建的模式。

如果 AST 非常复杂,请考虑使用 Scrap-Your-Boilerplate 编写此规范化。

关于haskell - 我如何轻松地表达我不关心特定数据字段的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25889388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com