大きなファンクターHello(Blah:Blah_type)を作成し、それをhello.mlファイルに保存したいのですが、どうすればよいですか?
トップレベルのファイルにいる場合は、モジュールHello(Blah:Blah_type)= struct val x =2endがあります。
しかし、どうすればhello.mlに引数を入れることができますか?ファイル全体を「valx=2」にすることはできません...?
OCamlPro には、これをサポートするコンパイラ パッチと外部ツールがあります。
http://www.ocamlpro.com/blog/2011/08/10/ocaml-pack-functors.html
私の知る限り、公式のコンパイラ リリースは .ml ファイルをファンクタとしてサポートしていません。
それは不可能。ソース ファイルは常に、ファンクターではなく、通常のモジュールとして表されます。これは、もう 1 つ開くだけで簡単に解決できます。
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 : S
orM : Hello.S
はオプションです (M はファンクターに渡されるときにこのシグネチャに強制されます)。これは、これを行う方法を示すためのものです。