【问题标题】:OCaml, comparing int lists using < > = operatorsOCaml,使用 < > = 运算符比较 int 列表
【发布时间】:2018-12-23 13:51:02
【问题描述】:

问题:

使用 、= 比较 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

跟进问题:

  • 比较两个列表时,如果列表长度不同,比较如何进行?如果列表不包含相同类型的元素?

【问题讨论】:

标签: list types comparison operators ocaml


【解决方案1】:

一个ocaml列表由

表示
type 'a my_list = Nil | Cons of 'a * 'a my_list

Nil 构造函数表示为值为 0 的整数,而 Cons 是指向具有标记 0 和 2 字段的块的指针。

= 运算符认为 Nil

比较总是在相同类型之间进行,因此无法比较不同类型的列表(没有 Obj.magic)。

【讨论】:

    猜你喜欢
    • 2011-11-24
    • 2020-11-10
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    相关资源
    最近更新 更多