ocaml - 如何命名 OCaml 变体中的字段?
问题描述
具有大量字段的变体开始变得笨拙。每个字段的作用都以注释结尾:
type ty =
| FunTy of (*all*) ty list * (*params*) ty list * (*return type*) ty
...
一种解决方案是让变体的值成为记录。
type ty =
| FunTy of ft
...
and ft = {
forall : ty list;
p_tys : ty list;
ret_ty : ty
}
但是,取消引用记录字段需要间接。这对我的目的无关紧要,但我可以看到这种性能差异使重构在实践中变得单一。
为了使这个答案保持客观,参考 OCaml 文档或风格指南会有所帮助。
解决方案
自 OCaml 4.03(2016 年发布)以来,您可以使用内联记录,它为您提供了良好的记录语法接口——此外,您可以拥有可变字段——具有与元组语法相同的内存表示。
type ty =
| FunTy of {
forall : ty list;
p_tys : ty list;
ret_ty : ty
}
...
您有一些工具来操作包含的记录,但是(与元组语法中的参数“元组”没有什么不同)它不是一等值(有关更多详细信息,请参阅上面链接的文档)。
推荐阅读
- python - 制作有状态 LSTM 时出现 InvalidArgumentError
- azure - Azure 复制活动性能
- python - 如何使用 python 在我的树莓派显示器上显示实时传感器数据读数?
- java - 我可以使用 params 对象在静态泛型方法中传递泛型类型参数吗?
- python - Pandas - 根据日期之间插入的时间戳加入两个数据帧
- javascript - 不和谐 node.js 和 mysql 的 4 字节字符的 utf8 编码问题
- javascript - 使用 NodeJS 生成多线程进程
- swift - 如何通过 web3swift 将对象传递给智能合约方法?
- java - 如何将元素合并在一起
- python - IsolationForest 总是预测 1