2013-12-14 16 views
7

最近OCamlプロジェクトを読んでいます。私はいくつかの実験をすることができるように、ソースファイルをutopに入れたいと思います。
amodule.ml,bmodule.mlの2つのファイルがあるとします。 bmodule.ml
は、例えば、 amodule.ml Amodule.anyfunction()使用 bmoduleをで定義された関数を使用するanyfunction() amodule.ml で定義され
私はutopでそれらの両方を入れたい:
OCaml utopでいくつかのモジュールを使用する

#directory "/directory contain amodule.ml and bmodule.ml" 
#use "amodule.ml" 
#use "bmodule.ml" 

そして、これは動作しません Amoduleがファイルとutopは知らないamodule.ml上のモジュール名ベースであるため、これらのこと、私は思う。
だから私は、ファイルの内容を変更せずにutopでこれらのファイルを置くことができるか?

+0

amodule.mlとbmodule.mlがあるフォルダに 'cd'して、そこに' utop'と打ってみましたか? –

+0

はい。でも、まだ動作しません。 – KUN

+0

あなたはそれがうまくいかないことを意味しますか?あなたはスクリーンショットや完全なユートプテキストを投稿できますか? –

答えて

8

#use a.mlは、あなたが直接、トップレベルでこれらのステートメントを入力した場合と同様にa.ml内のすべての文を実行します。したがって、module Aが定義されていないので、他のファイルはA.fooのようなものを持つことはできません。 module Aが必要な場合は、最初にa.mlをバイトコンパイルし、次に#load a.cmoをバイトでバイトする必要があります。

+4

新しいバージョンのOCamlでは '#use_mod'がサポートされています。 – hcarty

+3

@hcartyで言及されたディレクティブは実際には '#mod_use'ですが、実際にはとても便利です。 :) –

+2

'#mod_use'は私が見逃していたパズルの一部です。ありがとう@ShonFeder!私はReal World OCamlが一度も言及していないとは信じられません。 – Tobia

関連する問題