根据David MacQueen在他的《Reflections on Standard ML》报告中的说法1,词汇作用域中缀指令是从Pop-2遗留下来的不良遗产。它们使解析变得复杂,并且与模块系统不兼容,因为中缀指令无法由结构导出或在签名中指定(而添加此功能也不是一个好主意)。
现在我确实同意他关于私有作用域
所以我的问题简而言之是,文献中是否存在引用或已知的问题支持MacQueen关于不导出固定性的观点?
现在我确实同意他关于私有作用域
infix[r]
声明是个坏主意的说法,这使得导入用户定义的运算符变得相当无用,但我想象的解决方案是在签名中导出这些声明... 而不是完全摆脱它们。在我所知道的具有固定性声明的语言中(ML和衍生语言、Haskell和衍生语言、Prolog等),我对它们是否记录了这个想法的优缺点感兴趣。更普遍地说,语言实现者的经验会带来有趣的见解,以弥补从用户角度看起来很方便的功能的缺点。所以我的问题简而言之是,文献中是否存在引用或已知的问题支持MacQueen关于不导出固定性的观点?
infixr
,而像 snoc 的操作则是infixl
,以允许方便的重复应用。Cons 和 snoc 的绑定比 append 更紧密。如果操作形成一个半环,则“乘法”将比“加法”更紧密地绑定。混合无关的运算符而不使用括号通常会避免造成混淆。 - dfeuer