我想编写一个模块(在Ocaml 3.12中),它能够将变体类型定义为现有不同类型的聚合看起来可能是这样的:module Composite ( T0 : sig type t end ) ( T1 : sig type t end ) = end
第一个困难:如何将函子的变量列表传递给“复合”模块?edit
b c = T (a,b,c)
fmap f (T (x, y, z)) = T (x, y, (f z))
如何将实际的元组(不是我的新类型)转换为函子?因此,我可以在两种类型下进行部分评估,得到某种* -> *,它可以是Functor,也可以是其他参数化类。这个评估在前两个参数中很容易完成,但原则上在