2016-05-01 83 views
1

我有一個關於簽名類型的基本問題。如果我有像兩個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 

什麼是在類型噸以上簽名?它是多態的嗎?

回答

1

它是隱藏實現並阻止用戶直接使用它的抽象類型。請參閱module systemRWO
但我不確定您當前的示例是否可以正常工作,因爲您的代碼示例似乎不在模塊中。

+0

我已經閱讀了您提供的兩個鏈接,但我仍然遇到問題,要弄清楚類型,抽象類型,簽名和模塊/函子是如何組合成最終產品的。 – G4143

+0

在我給出的RWO鏈接中,這個例子非常清晰,恕我直言(freq&counter example)如何隱藏一些特定的實現。對於函子來說,相應的章節也非常詳盡(儘管我在一讀時沒有看到它......)。可能是你應該更詳細地解釋你的例子(對我來說有點難以掌握你正在使用的用例) –

+0

我想是時候花些時間用這些鏈接和一個代碼編輯器來看看我是否可以弄清楚這一切都在一起。我認爲主要的障礙之一是抽象類型.. – G4143