type t = A;;
.<A>.;;会产生错误Unqualified constructor A cannot be used within brackets. Put into a separate file.
造成这个错误的根本原因是什么?
一些参考资料可以找到这里
发布于 2015-06-24 19:08:11
这是官方的解释- http://okmij.org/ftp/ML/MetaOCaml.html#ctors
我非常模糊的猜测是,这种限制来自于需要确保在编译时和运行时使用相同的变体定义(因为相同的代码可以而且将在运行时的不同时间进行编译),通过将类型声明放在单独的模块中,它们会被编译器散列和检查,并进行通常的接口匹配检查。此外,我认为阴影的可能性在这里起到了一定的作用。
https://stackoverflow.com/questions/31032002
复制相似问题