2017-06-28 5 views
1

:loadに与えられた順序やパスを変更すると可視のバインディングが変更され、複数のモジュールを同時にデバッグすることは不可能であることがわかりました。私はいつもバインディングを失うので、私は:loadのたびに迷惑です。GHCIのトップレベルで2つのモジュールを結合できますか?

the most recently successfuly loaded module」という言葉で示唆されているように、*-formにはモジュールが1つしかないようです。それにもかかわらず、トップレベルのモジュールは:loadの最初の引数として与えられているようです。

+1

プロンプトに先行するモジュール(つまり 'A'が' * A> 'の" \ * form ")を意味する場合は、そのモジュールを任意の点に明示的に追加することができます':m + * A'がロードされた後に「最近読み込まれたモジュール」の部分は、 ':load'を実行した後に自動的に最新のモジュールをコンテキストに追加するGHCiの単なる利便性を指します。そして、実際には、ロードされた最初のモジュールが、最新のロードされたモジュールではなく、コンテキストに自動的に追加されるようです。私はそれがドキュメントの間違いだと思う。それにかかわらず、それはあなたの問題には関係ありません。 – user2407038

答えて

3

私が開発しているときに、GHCiで2つ以上のモジュールを同時に使用したいと思っています。

> :m Control.Lens Control.Monad 

両方Control.LensControl.Monadがスコープにありますのは、私が呼ばMainでプログラミングしていControl.MonadControl.Lens、そして私自身のモジュールを使用したいとしましょう。

この時点で、私はMainを追加することを忘れていたようですので、モジュールを追加する+を簡単に置くことができます。これは非常に便利です、私は通常常にそれを使用して、私はあなたが一度に複数のモジュールをインポートする方法を見ることができた上記をあなたに示していた。

> :m + Main 

それとも、私が普通であろうことは、私はちょうど説明した:

> :m + Main Control.Lens Control.Monad 

私はMainは通常、デフォルトで含まれていると思いますが、あなたがする絵として:)

を取得再ロードするには:rコマンドを使用してリロードしますが、バインディングが失われてしまうのは残念ですが、通常は私が書いているコードに入れたり、時には一時的に書き込んだり、OSのreadlineサポートを使って "go以前の定義を見つけるために歴史的なバックスクロールを介して "アップ" ons。

ハスケリング!

関連する問題