2016-05-01 9 views
1

シグネチャのタイプについて基本的な質問があります。私のような2つのocamlのファイルがある場合:OCaml - シグネチャ、モジュール、タイプ

istr.ml

type t = int 

let get_string f v = f v 

とfstr.ml

type t = float 

let get_string f v = f v 

stri.mli署名を

module type STR = 
    sig 

    type t 

    val get_string: (t -> string) -> t -> string 

    end 

タイプtは何ですか?上記の署名?多形ですか?

答えて

1

これは、実装を隠し、ユーザーが直接使用することを妨げる抽象型です。 module systemまたはRWO
を参照してください。しかし、あなたのコード例がモジュールに含まれていないように見えますが、あなたの現在の例が有効かどうかはわかりません。

+0

私はあなたが提供したリンクの両方を読んでいますが、タイプ、抽象型、シグネチャ、モジュール/ファンクタが最終製品としてどのように集まっているかを調べるのにまだ問題があります。私が与えたRWOリンクの – G4143

+0

は、いくつかの具体的な実装を隠す方法を明確に示したIMHO(freqとcounterの例)です。ファンクタの場合、対応する章もかなり徹底的です(最初の読書でそれをキャッチしませんでしたが...)。もっと具体的にあなたの例を説明する必要があるかもしれません(あなたが目標としているユースケースを理解するのが少し難しいです) –

+0

私はそのリンクとコードエディタで深刻な時間を過ごして、それはすべて一緒に来る。私は主要なハードルの1つが抽象型だと思います。 – G4143

関連する問題