我將OCaml Format module轉換爲F#;請參閱我的earlier question。將OCaml轉換爲F#:如何轉換OCaml格式模塊的類型
要開始我改變了
型尺寸
外部size_of_int:INT - >尺寸= 「%同一性」
外部int_of_size:尺寸 - > INT = 「%同一性」
到
讓size_of_int =的sizeof
<int
>
和我認識的幾個其他的調整是不正確的,但它讓我轉換成open_box和close_box相關的所有代碼,希望這三行。
現在我不得不更改這三行,以便測試我轉換的格式模塊的子集。
我知道具有size_of_int和int_of_size的行在外部可能會依賴於F#內核中的某個函數。我也知道%identity可能會被轉換忽略。
我最好的猜測是,我只需要創建一個簡單的類型命名大小與size_of_int和int_of_size,但如何?
編輯根據答覆Jeffrey Scofield
我能夠創建以下的F#代碼。
type size =
interface
abstract size_of_int : int -> size
abstract int_of_size : size -> int
end
type size = int
let size_of_int i = i
let int_of_size s = s
它允許我的Format模塊的子集成功編譯。
編輯
Jack,誰在下面回答,有在FSharpx.Compatibility.OCaml.Format.Format.fs 一個版本我還沒有」測試,但它是最compelete版本我目前所發現的。