6

大きなファンクターHello(Blah:Blah_type)を作成し、それをhello.mlファイルに保存したいのですが、どうすればよいですか?

トップレベルのファイルにいる場合は、モジュールHello(Blah:Blah_type)= struct val x =2endがあります。

しかし、どうすればhello.mlに引数を入れることができますか?ファイル全体を「valx=2」にすることはできません...?

4

3 に答える 3

6

OCamlPro には、これをサポートするコンパイラ パッチと外部ツールがあります。

http://www.ocamlpro.com/blog/2011/08/10/ocaml-pack-functors.html

私の知る限り、公式のコンパイラ リリースは .ml ファイルをファンクタとしてサポートしていません。

于 2012-04-11T16:25:34.340 に答える
4

それは不可能。ソース ファイルは常に、ファンクターではなく、通常のモジュールとして表されます。これは、もう 1 つ開くだけで簡単に解決できます。

于 2012-04-11T16:24:12.590 に答える
3

foo.mlコンテンツを含むファイルではなく、実際のコード サンプルで ygrek の回答を補完するには

module type S = sig
  (* ... *)
end

module Hello (M : S) = struct
  (* ... *)
end

module M : S = struct
  (* ... *)
end

module H = Hello(M)

(* ... *)

あなたはhello.mlコンテンツを持っている可能性があります

module type S = sig
  (* ... *)
end

module Make (M : S) = struct
  (* ... *)
end

foo.ml書き直した

module M : Hello.S = struct
  (* ... *)
end

module H = Hello.Make(M)

(* ... *)

PS: わかりにくい場合のために説明すると、モジュール seal M : SorM : Hello.Sはオプションです (M はファンクターに渡されるときにこのシグネチャに強制されます)。これは、これを行う方法を示すためのものです。

于 2012-04-12T11:18:16.950 に答える