gpt4 book ai didi

marshalling - 哪些OCaml标准库类型无法编码?

转载 作者:行者123 更新时间:2023-12-04 07:59:16 28 4
gpt4 key购买 nike

我无法整理数据结构(错误抽象类型(自定义))。使用了一种已知的抽象类型,即Big_int。但是,编码(marshal)很好。应用程序中没有自定义C代码。除Nums之外,还使用Unix库(但是我不相信有任何这种类型的事件对象)。我们正在与封堵编码(marshal)。

使用两个(仅)第三方库:OCS方案(方案解释器,纯Ocaml)和Dypgen(可扩展GLR解析器,也为纯Ocaml)。问题出在Dypgen的新功能上,它保存了动态扩展的解析器。

Ocaml错误消息几乎是无用的(它不能识别出哪个带有Custom标签的抽象类型是罪魁祸首)。

我们怀疑Lexbuf是罪魁祸首,因为它包含Ocaml channel 的关闭,并且不能被编码,但这似乎不是问题所在。所以我的问题是:

Marshall不能使用哪些标准库组件?

最佳答案

弱数组无法编码(marshal)。我不熟悉OCS Scheme,但是我希望使用OCaml编写的垃圾收集语言的解释器使用弱指针(它们使您可以搭载OCaml的内存管理功能)。

在OCaml的辩护中,我认为Custom方法块不包含类型的名称(回顾起来,这似乎是一件好事)。

编辑:是的:

$ grep Weak ~/Downloads/ocs-1.0.3/src/*.ml
/Users/pascal/Downloads/ocs-1.0.3/src/ocs_sym.ml:module SymTable = Weak.Make (HashSymbol)

编辑2:
ygrek指出,自定义方法块中有 namespace 。我还应该澄清弱数组不是自定义值,因为我的回答似乎暗示了这一点。弱数组具有Abstract标记,并使用数据的第一个字进行链接,以便垃圾收集器可以在收集周期的与弱指针相关的特定阶段遍历它们。

关于marshalling - 哪些OCaml标准库类型无法编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4840449/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com