我想在结构a中声明一个中缀运算符,以便在结构外部使用。但我似乎无法获得" infixness"即使结构已被打开,也要在结构外被识别。以下是使用Poly / ML的示例:
index cd785c4..967453b 100644
这是标准ML的限制吗?
答案 0 :(得分:1)
是的,标准ML不支持此功能。每次open
结构时,您都必须重新声明固定性,并且可选地重新声明优先级。解决这个问题的一种方法是全局声明固定性,即在任何结构之外,但是单独编译并不能很好地支持它,并且它也不是非常模块化的。您可以在MLton's InfixingOperators page上了解有关它的更多信息和可能的解决方法。
对于我自己的项目,我在文本编辑器中定义了一个快捷方式,它将扩展为open
声明和固定声明。
另外,作为个人风格指南,我并未宣布优先权。如果我需要将多个中缀运算符混合到同一个表达式中,我宁可明确地使用括号。将标识符作为中缀进行眼图分析很容易,解析优先级不是。