我发现改变:load
的顺序或路径会改变可见的绑定,同时调试多个模块似乎是不可能的。每次我:load
时都会丢失绑定,这一点尤其令人讨厌。
*-form
"的措辞似乎只有the most recently successfuly loaded module中的一个模块。尽管如此,顶级模块似乎是:load
的第一个参数。
答案 0 :(得分:3)
当我开发并且我想在GHCi中同时使用两个或更多模块时,这就是我的工作。假设我想使用Control.Monad
和Control.Lens
,以及我正在编程的我自己的模块Main
:
> :m Control.Lens Control.Monad
现在,Control.Lens
和Control.Monad
都在范围内。
现在,我似乎忘记添加Main
,因此我可以轻松添加一个+
来添加模块。这非常方便,我通常总是使用它,我只是向您展示上述内容,因此您可以看到如何一次导入多个模块。
> :m + Main
或者,正如我刚才所描述的那样,我通常会这样做:
> :m + Main Control.Lens Control.Monad
我认为默认情况下通常会包含Main
,但是你会得到图片:)
至于重新加载,我使用:r
命令重新加载,是的,它可能会导致绑定丢失,但通常我会将它们放入我正在编写的代码中,有时是暂时的,或者我使用操作系统的readline支持“通过历史反向滚动”来查找先前的定义。
快乐的Haskelling!