5

コマンド(GHCi内)

:load abc

ファイルabc(現在のディレクトリパスに存在する必要があります)に関数をロードします。現在のディレクトリパスにあるすべてのファイルをロードするにはどうすればよいですか?ありがとう

-------------------------------------------------- --------------------------------

[以下の投稿への返信]

こんにちはRotskoff、ありがとう私はあなたの提案を試しましたが、それを機能させることができなかったので、私は何かを誤解したに違いないと思います。

次のように、test.hs、test1.hs、test2.hsの3つのファイルを作成しました。

->

--test.hs
import NecessaryModule

->

--test1.hs
module NecessaryModule where

addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b

->

--test2.hs
module NecessaryModule where

addNumber2 :: Int -> Int -> Int
addNumber2 a b = a + b

それから私がしたとき:

:load test

エラーメッセージが表示されました:

test.hs:1:8:
    Could not find module `NecessaryModule':
      Use -v to see a list of the files searched for.

ありがとう

-------------------------------------------------- -------------------------------

ありがとう。これは私がそれを機能させるためにしたことです(Rotskoffの提案に従って):

->

--test.hs
import NecessaryModule1
import NecessaryModule2

->

--NecessaryModule1.hs
addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b

->

--NecessaryModule2.hs
addNumber2 :: Int -> Int -> Int 
addNumber2 a b = a + b
4

2 に答える 2

5

:loadGHCiでコマンドを他の目的に使用することはできないため、おそらくHaskellソースファイルを意味します。

ロードするソースファイルの上部に、次の行を含めます。

import NecessaryModule

ソースファイルごとに、モジュールに名前を付けてください。たとえば、

module NecessaryModule where

が表示されます。GHCiはすべてのファイルを自動的にリンクします。

データをインポートしようとしている場合はSystem.Directory、ドキュメントを参照してください。

于 2012-04-22T16:03:14.257 に答える
2

モジュールのファイル名と名前が同じであるとよいでしょう。

➤ mv test1.hs NecessaryModule.hs
➤ ghci
GHCi, version 7.0.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> :load test
[1 of 2] Compiling NecessaryModule  ( NecessaryModule.hs, interpreted )
[2 of 2] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: NecessaryModule, Main.

:loadコマンドはモジュール(ファイル名による)とその依存関係(入力:helpまたは:?GHCiプロンプトで読み取ることができる)をロードするためです。

また、:loadコマンドは現在のGHCiセッションで定義された以前のすべての宣言を消去するため、現在のディレクトリ内のすべてのファイルをロードするには、次のようにすることができます。

Prelude> :q
Leaving GHCi.
➤ ghci *.hs
GHCi, version 7.0.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.

<no location info>:
    module `main:NecessaryModule' is defined in multiple files: NecessaryModule.hs
                                                            test2.hs
Failed, modules loaded: none.
Prelude> :q
Leaving GHCi.
➤ rm test2.hs
➤ ghci *.hs  
GHCi, version 7.0.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
[1 of 2] Compiling NecessaryModule  ( NecessaryModule.hs, interpreted )
[2 of 2] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: NecessaryModule, Main.
*NecessaryModule> 
于 2012-04-23T21:19:08.433 に答える