2013-04-04 62 views
3

我打算在Ocaml中使用Map來練習。如何使用Map /定義一個實際上是OCaml中的Map的類型?

我發現Map的用法是從ListArray完全不同,等

我的理解是運用functor,我還沒有學會。但沒關係。


這裏是我的IntMap

module IntMap = Map.Make(struct type t = int let compare = compare end)

所以,現在我可以IntMap.add x y map使用IntMapadd等,對不對?


我有幾個問題:

  1. 如何控制valuemap類型?
  2. 如果我想要我的IntMap的別名類型,我該怎麼辦?我可以做type 'a my_type = 'a list,但map怎麼辦?
  3. 我發現IntMap就像List,他們兩個實際上都是modules。但List有一種類型list,那麼map呢?

回答

3

問:

如何控制值在地圖類型?

您不需要,'a IntMap.t是一個參數化類型,其中包含'a類型的值。因此,單個模塊IntMap可用於從整數到整數,從整數到布爾,整數到函數...(當然,單個映射值只能包含單個類型的綁定)。此外,沒有理由試圖限制IntMap.empty的類型,就像沒有理由強制[]是除'a list以外的任何類型。

問:

如果我想有一個別名類型我IntMap,我該怎麼辦?我可以輸入'a my_type ='列表,但如何處理地圖?

這樣:

type 'a imap = 'a IntMap.t 

問:

我發現IntMap就像列表和他們兩個其實都是模塊。但List有一個列表類型,那麼地圖呢?

這是Intmap.t

+0

我在doc中看到'type +'a t類型鍵到類型'a'的映射類型,裏面的'+'的含義是什麼? – 2013-04-04 16:25:37

+0

@JacksonTale看到這個問題:[爲什麼在此類型之前有一個加號?](http://stackoverflow.com/questions/15305499/why-there-is-a-plus-sign-before-this-type/ ) – gasche 2013-04-04 21:46:52

相關問題