1
3
你要解决的一般问题是
采用可变数据结构,并将其视为不可变的
. 当你创建一个新的记录时,这种情况就出现了,这是一个危险的事实。(尽管我会指出,因为你正在创建一个
每一个
场是不同的,
将可变数据结构视为不可变数据结构的一般解决方案是 复制,然后变异 . 但这个解决方案充满了危险:
这种考虑是导致人们首先避免可变状态的原因。我意识到在caml中很难做到这一点,因为标准库对于函数式语言来说是非常必要的。不过,我相信从长远来看,正确的“总”战略是 用纯函数数据结构替换可变抽象 . 附录:下面是哈希表的示例:
提供
|
2
3
为了使它的使用尽可能的实用,你可以这样做,
当然,如果您经常这样做,那么最好使用功能性数据结构——ocaml中的映射。这也是一般的方法,如果数据结构是可变的,则必须复制它才能以函数方式使用。hashtbl实现是一个链表数组,仅供参考(如果需要替换结构的话,可以进行权衡);
|
3
1
hashtbl不是功能性数据结构,而是基于更改的。你必须
只是从网上看 documentation 我猜。
|
Tosh · ocaml获取语法错误[已关闭] 6 年前 |
Beta Ziliani · OCaml-与类型别名混淆(警告40) 6 年前 |
Jheel rathod · 带有构造函数的ocaml递归类型记录 6 年前 |
HegoDamask · (OCaml:非穷举模式匹配) 6 年前 |
Flux · 如何以静默方式加载顶级模块 6 年前 |
Flux · 如何编写显示HTML或重定向到其他页面的服务 6 年前 |
Daiwen · ocaml中GADT的异构列表[重复] 6 年前 |
nejifnjalz · OCaml语法错误-有趣的模式匹配 6 年前 |
M. Walker · 无法键入多态[%bs.raw函数 6 年前 |