OCaml 中的高阶模块

nic*_*las 1 ocaml module higher-kinded-types

手册中从未提及以 OCaml 仿函数作为参数或返回 OCaml 仿函数的 OCaml 仿函数。

是否有技术原因阻止 OCaml 拥有更高阶的模块?

oct*_*ron 5

支持高阶函子并按预期工作:

module type endo = sig
  module type t
  module F: t -> t
end
module Twice(F:endo) = struct
  module type t = F.t
  module F(X:t) = F.F(F.F(X))
end
Run Code Online (Sandbox Code Playgroud)

该手册只是认为这是一个并不令人惊讶的功能。