我在互联网上找不到如何使用我写的函子。如果您需要更多上下文信息,我将发布一个最少的代码,然后我将添加,但是我敢肯定这确实很容易。
我想我只是不了解什么是函子,我看到这样的事情(由于我是OCaml的新手,所以我将使用Java的类比来阐明我的理解):
下面要给出的示例很愚蠢,只是为了让我理解其中的概念:
module type tF = sig
type 'a t
val create : 'a t
end
module F : tF = struct
type 'a t = 'a list
let create = []
end
module type tF2 = functor(F : tF) -> sig
val foo : 'a F.t -> 'a F.t
end
module F2 : tF2 = functor(F : tF) -> struct
let foo f = f
end
我知道我可以例如:
let test = F.create
但是我不知道如何使用F2。
我已经尝试过此page,但是它没有使用我的符号,所以我比以前更困惑。
答案 0 :(得分:2)
F2
接收一个类型为tF
的模块,并生成一个具有一个函数foo
的模块:
module NewF = F2 (F)