、あなたは巣署名することができます誰もが使用中のこののいずれかの例を持っていた場合、私はそれが必要とされるであろう任意の場所を考えることができないので、OCamlのネストシグネチャの例は? OCamlでは
module type FOO =
sig
module type BAR
(* … *)
end
私は、思っていました。私はそれがおそらくファンクターのリターンシグネチャーでは便利だと思いますが、私は特定の事柄について考えることはできません。
、あなたは巣署名することができます誰もが使用中のこののいずれかの例を持っていた場合、私はそれが必要とされるであろう任意の場所を考えることができないので、OCamlのネストシグネチャの例は? OCamlでは
module type FOO =
sig
module type BAR
(* … *)
end
私は、思っていました。私はそれがおそらくファンクターのリターンシグネチャーでは便利だと思いますが、私は特定の事柄について考えることはできません。
まず例:http://caml.inria.fr/pub/docs/manual-ocaml/libref/type_Map.html
それを開くことができ内部のInfix
モジュールが含まれて(それは確かだファンクタのシグネチャ)
私は(多分電池に)いくつかのモジュールを見て思い出し、本当に欲しいときにのみ、例えば、このように
module Rational =
struct
let add a b = ...
let sub a b = ...
module Infix =
struct
let (<+>) = add
let (<->) = sub
end
end
あなたがRational.Infix
モジュールを開くとしたら、あなたは、DE-スコープではないでしょう(?)は任意の関数Rational
で何と同じ名前を持ちます。
私はモジュールを使用してtypes
を画定するプロジェクトに取り組んでいます。モジュールが1つのタイプのみを定義し、そのタイプを操作すると組織化に役立ちます。特にモジュールが小さく、別のファイルを持つことは有利ではなく、バリアント型は意味をなさない。
module Node =
struct
end
module Edge =
struct
end
type 'a tree = { nodes : 'a Node.t; edges : 'a Edge.t; }
また、エトセトラ、我々は、生物学的データ--Nexusのために必要なすべてのパーサーのための(-mlpackと組み合わせ)として別々のファイル、FASTA、PHYLIP、けれども、それらを使用しています。
最後に、新しいアルゴリズムのプロトタイプを作成するときは、最初にocamlで記述し、次にCバージョンで作業します。 ocamlのバージョンは、通常、同じ関数名を持つ内部モジュールに保持されます。
module Align =
struct
module OCaml =
struct
end
end
ネストされたモジュールは理にかなっています。しかし、質問はネストされたモジュール*シグネチャ*について質問しています。 –
マイケル、あなたは質問をしているようです。ネストされたモジュールの決定的な利点は、ネストされたモジュールシグネチャの必要性を生み出すことです。 – nlucaroni