list - OCaml,使用 < > = 运算符比较 int 列表
问题描述
问题:
使用 <、>、= 比较 int 列表背后的逻辑是什么?'a 列表呢?
代码:
# let x = [1] > [1]
val x : bool = false
# let x = [1;2] > [1]
val x : bool = true
# let x = [1;2] > [2;1]
val x : bool = false
# let x = [true;false] < [true;true]
val x : bool = true
跟进问题:
- 比较两个列表时,如果列表长度不同,比较如何工作?如果列表不包含相同类型的元素?
解决方案
ocaml 列表表示为
type 'a my_list = Nil | Cons of 'a * 'a my_list
Nil 构造函数表示为值为 0 的整数,而 Cons 是指向具有标记 0 和 2 字段的块的指针。
< > = 运算符考虑 Nil < 缺点。因此,如果列表的长度不同,则较短的列表会更小。
比较总是在相同类型之间进行,因此无法比较不同类型的列表(没有 Obj.magic)。
推荐阅读
- terraform - 创建 efs-server 并为 AWS EKS 设置安装它时出错
- javascript - 反应:名称未通过 onChange(),e.target.name 在 DatePicker 上未定义
- python - 用于 Linux 环境的 python ibm_db
- nginx - Nginx 更改根路径后返回 404
- reactjs - 无法对未安装的组件执行 React 状态更新。表示内存泄漏
- r - GAM 预测的可重复性(mgcv 包)
- apache-kafka - Kafka 触发对低吞吐量主题的压缩
- javascript - 通过魔术电子邮件链接进行身份验证时检测页面是否已经打开
- javascript - 反应原生 .shuffle()
- python-3.x - pd.read_parquet 产生:OSError: Passed non-file path