我听说 OCaml 3.12 中即将推出“一流模块”。他们将提供什么优势?哪些孩子的事情会变得更容易?他们试图解决什么问题?一个简单的例子就足够了。
这只是一个可能的应用程序,但一流的模块可以轻松地对存在类型进行编码,基本上是一个模块打包存在类型和使用该类型的值)。例如,请参阅 Alain Frisch 对动态类型的研究(代码取自 Alain Frisch 对 dyntypes 的研究:http://caml.inria.fr/cgi-bin/viewvc.cgi/ocaml/branches/dyntypes/stdlib/dyntypes.ml?view=markup http://caml.inria.fr/cgi-bin/viewvc.cgi/ocaml/branches/dyntypes/stdlib/dyntypes.ml?view=markup )
module type DYN = sig
type t
val x: t
val t: t ttype
end
type dyn = (module DYN)
let dyn (type s) t x =
let module M = struct
type t = s
let x = x
let t = t
end
in
(module M : DYN)
这里的想法是“ttype”是该类型的具体表示,是一种具有 Int、Float 构造函数等的代数数据类型,这里有一个值,其类型是隐藏的,但带有该类型的具体表示,例如,您可以使用它来获得更安全的序列化/反序列化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)