1

我正在为 Haskell 中的一种简单的命令式编程语言编写一个(小步)解释器。我想在 IO monad 之外进行评估,因此我试图将 ST monad 用于可变变量。但是我意识到这意味着向我的值类型引入一个新的幻像类型变量,但是我的表达式类型也需要它,然后我的语句类型也需要它,等等第四。

我的问题是,有什么好的方法可以避免这个问题。我可以以某种方式隐藏幻像类型吗?我试图通过forall s.在我的 AST 定义中引入 a 来做到这一点,但编译器对此并不满意。

4

0 回答 0