标准ML导出运算符来自结构作为中缀

时间:2016-03-22 18:33:51

标签: sml polyml

我想在结构a中声明一个中缀运算符,以便在结构外部使用。但我似乎无法获得" infixness"即使结构已被打开,也要在结构外被识别。以下是使用Poly / ML的示例:

index cd785c4..967453b 100644

这是标准ML的限制吗?

1 个答案:

答案 0 :(得分:1)

是的,标准ML不支持此功能。每次open结构时,您都必须重新声明固定性,并且可选地重新声明优先级。解决这个问题的一种方法是全局声明固定性,即在任何结构之外,但是单独编译并不能很好地支持它,并且它也不是非常模块化的。您可以在MLton's InfixingOperators page上了解有关它的更多信息和可能的解决方法。

对于我自己的项目,我在文本编辑器中定义了一个快捷方式,它将扩展为open声明和固定声明。

另外,作为个人风格指南,我并未宣布优先权。如果我需要将多个中缀运算符混合到同一个表达式中,我宁可明确地使用括号。将标识符作为中缀进行眼图分析很容易,解析优先级不是。