标签: haskell st-monad
我正在为Haskell中的简单命令式编程语言编写一个(小步)解释器。我想在IO monad之外做评估,因此我试图将ST monad用于可变变量。但是我意识到这意味着在我的值类型中引入了一个新的幻像类型变量,但是我的表达式类型也需要它,然后我的语句类型也需要它,所以第四。
我的问题是,有什么好方法可以避免这个问题。我可以用某种方式隐藏幻像类型吗?我试图通过在我的AST定义中引入forall s.来做到这一点,但编译器对此并不满意。
forall s.