我正在编写一个矢量和矩阵模块,它构建在OCaml提供的默认Array
模块之上。我正在做的是添加其他功能,如通过索引获取切片等。我为这两个模块制作了一个定制的漂亮打印机。
我想阻止我可能有'a Vec.t Vec.t
或'a Mat.t Mat.t
的情况,因为漂亮的打印机会尝试递归打印结构。到目前为止,我通过为我用elt
仿函数实例化的两个模块引入一个额外的类型CONSTRAINTS
来限制这一点。
我发现这有点麻烦,所以我想知道是否还有其他方法可以做到这一点?
编辑:我希望能够拥有type 'a t
但限制'a
不是'a t
本身的实例。