1 / 2
14 / 17 · Maps and Hash Tables
Map 记住比较方式
树形 Map 要知道键怎么排序。这个信息待在类型里。
Base 的 Map 不是一个全局的 Map.t。你先有一个比较器,Make 或带 comparator witness 的接口会把「怎么比」写进类型。这样 set 和 find 不会拿两种排序去操作同一棵树。
书桌里的 Map 是教学用的简化版:键用结构相等,没有真正的 comparator witness。行为够用来练 set / find,类型旁注才是这一课要记住的。find 返回 option。
例子
utop
let m = Map.emptyval m : ('k, 'v) map = (empty)let m = Map.set m ~key:"ocaml" ~data:1996let m = Map.set m ~key:"base" ~data:2018Map.find m "ocaml"- : int option = Some 1996
Map.find m "rust"- : 'a option = None
改一改
改完再跑
解释器覆盖书前半的核心:函数、标签参数、模式、记录、变体、ref、模块,以及简化的 Map 和 JSON。没有 GADT 细化、Async 和独立编译。
先预测,再对照
2 / 2