当我用ghci
编译一个Haskell文件时,通常用:load
,如果没有类型错误,所有的表达式都会加载到ghc解释器中。这非常好:我可以玩弄:t
来找出各种表达式的类型。
我的问题是:如果某处出现微小错误,ghci 将无法加载任何内容(甚至无法加载导入的模块!!),这使得找到正确的类型变得更加困难。我总是做同样的事情:注释掉所有不进行类型检查的位,在 ghci 中查找带有 :t
的相关类型,然后取消注释。
但这太乏味了!有没有更好的工作流程来"部分编译"Haskell源代码?
正如@MikhailGlushenkov评论中指出的那样,解决方案是使用 GHCi 的 -fdefer-type-errors
标志。