我在创建包含异构元素的集合时遇到问题,特别是元素的结构如下:
(a,1),((a,1),1)),((a,1),1),1)等......
我可以使用模块Set of ocaml吗?
还有一些功能允许我在集合之间制作笛卡尔积(也是异构的)?
您无法构建异构元素集.当然,如果您事先了解类型,则可以定义类型以统一类型.它看起来像你做的,它可能是由以下定义的递归类型:
type ('a,'b) r = | L of 'a
| N of (('a,'b) r * 'b)
Run Code Online (Sandbox Code Playgroud)
因此,您的示例将构建为,
N (L a,1)
N ( N (L a,1),1)
N ( N ( N (L a,1),1),1)
Run Code Online (Sandbox Code Playgroud)
然后,您只需构建Ordered模块以包含compare函数.
在创建笛卡尔积的情况下,此时您不会处理异构元素,而是前一类型的元组.这将需要一个新的Ordered模块来处理这些比较.
| 归档时间: |
|
| 查看次数: |
449 次 |
| 最近记录: |