types - 将多个变体合并为一个变体

标签 types ocaml variant reason

有没有办法将多个变体组合成一个?像这样的东西:

type pet = Cat | Dog;
type wild_animal = Deer | Lion;
type animal = pet | wild_animal;

这是一个语法错误,但我希望动物成为具有四个构造函数的变体: Cat | Dog | Deer | Lion 。有没有办法做到这一点?

最佳答案

多态变体是根据您的想法创建的。它们作为内存表示的效率较低,但如果您要将其编译为 JavaScript,则无关紧要:

type pet = [ | `Cat | `Dog];
type wild_animal = [ | `Deer | `Lion];
type animal = [ pet | wild_animal ];

关于types - 将多个变体合并为一个变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50781063/

相关文章:

C++ 抽象变体实现

c# - 检查对象是否为数字

java - 不兼容类型双字符串

c++ - OpenCV的Mat结构中存储的元素类型

functional-programming - 如何高效学习OCaml?

ocaml - 迭代器、枚举和序列之间的区别

c++ 变体没有这样的文件或目录

java - 如何在没有反射的情况下访问匿名对象中声明的字段?

list - 在 Ocaml 中将字符串拆分为单词字符列表

c++ - 在 C++ 中如何访问从 COM 对象返回的 VARIANT 数据类型中的 SAFE ARRAY?