10
我有以下情況:函子與多個參數OCaml中
module type M = sig type s = ... end
module Make(P: Something) : (M with type s = P.t) = struct
type s = P.t
...
end
工作正常生成用具體的實施及其實施內部Something
類型的模塊,M
類型的模塊。
現在假設我有另外一個模塊定義爲
module type AU = sig
val feed : float -> unitv
val nth : int -> (float -> float)
val reset : unit -> unit
end
有各種實現
module SUAlg : AU = struct ... end
module MLAlg : AU = struct ... end
module ACEAlg : AU = struct ... end
這個問題的一點是,M
模塊應該結束了兩件事情被參數:一個Something
模塊和AU
模塊,以便它類似於
module Make(P: Something) : (M with type s = P.t) = struct
type s = P.t
module Alg = MLAlg (* just an example *)
...
end
但我想有一個通用仿函數給出Something
並給出AU
它會生成一個模塊,它具有兩個具體實現。有沒有辦法輕鬆獲取?
由於函子的語法很奇怪,我仍然對它不熟悉,我不知道我問的是否可以用簡單的方法解決。
在此先感謝
是否有將參數傳遞給函子的不同語法? Make_LOffset(arg1 arg2)? – stumped 2016-10-06 16:38:17
@stumped那麼參數將會是模塊,所以它們看起來像'Arg1'和'Arg2'。語法是'Make_LOffset(Arg1)(Arg2)'。我已經更新了答案。 – 2016-10-06 19:56:28