2017-09-04 35 views
0

如果我有一個包含(.re)文件如何在接口文件中使用函數的輸出簽名?

module IntMap = 
    Map.Make { 
    type t = int; 
    let compare = compare; 
    }; 

type foo = IntMap.t string; 

哪能的foo簽名添加到接口的實現(.rei)文件?在與OCaml中的

module IntMap = Map.S with type key = int 
type foo = string IntMap.t 

我預想的比喻它是

module IntMap = 
    Map.S { 
    type t = int; 
    }; 

type foo = IntMap.t string; 

但在{導致語法錯誤。

回答

1

我懷疑問題的根本原因是您發佈的OCaml代碼無效。它應該是

module IntMap: Map.S with type key = int 

那麼原因是等價

module IntMap: Map.S with type key = int; 
type foo = IntMap.t string; 

差別不大:)

此外,如果你沒有意識到這一點,reason-tools是一個偉大的工具,將在Reason和OCaml之間轉換。它確實需要有效的輸入;)

+0

啊,謝謝。我的錯誤是1)引用OCaml的[無效示例](https://stackoverflow.com/review/suggested-edits/17241690)和2)試圖[通過嘗試原因轉換](https://reasonml.github .io/try /?ocaml = LYewJgrgNgpgBASQHYBcCyBDADgLjprAOgGU4B3ASxQAs4UBPLeAaxnrgF44LUg),其在校正的OCaml中報告語法錯誤。 –

相關問題