为什么Haskell优先级只有10个级别? 10这个数字够用吗?
|
我想知道为什么Haskell设计师同意只允许10个优先级?有人发现它不够吗?
没有找到相关结果
已邀请:
2 个回复
豹芜澈
)低-但这些约定有些局限,通常覆盖的层次不多。否则,记住操作符优先级的唯一方法是……记住它们,就像简单地记住每个优先级一样。这不仅是一件繁琐的事,而且会使其他人可能也不会记住所有内容的代码变得不透明。人工记忆是非常有限的资源,因此在编码时需要回忆的挑剔细节越少越好。 Haskell中优先级高的运算符的大多数用法属于以下几个粗略的组之一: 伪句法运算符喜欢
的常用用法,通常需要极高或较低的优先级来避免与其他运算符发生冲突。 使用标准运算符或其变体的表达式,其中存在少量标准优先级,新运算符通常应与其所基于的内容共享相同的级别。 专门的运营商集,例如用于EDSL的运营商集,通常选择其符号和优先级来反映EDSL的性质,并且不太可能与其他运营商集共存。 所有这些都可以很好地管理,并且只有几个优先级。更重要的是,它们的特征是要么有效地独立于其他运算符,要么仅与非常有限的一组其他运算符一起使用。开始增加更多的运算符并将它们在单个表达式中混合在一起,很快人们就会开始使用显式括号,因为他们不记得绑定比绑定更紧密。对于我自己来说,在将EDSL样式的运算符(例如4个组合符)与逻辑运算符混合时,我已经很容易出现显式括号,因为我通常不记得每个人都有的确切优先级。 因此,我们已经确定:1)许多额外的优先级并没有太大用处,因为它无法跟踪; 2)我们选择的任何限制都将同样是任意的...为什么10 ?我会猜测“因为固定性值只有一位数字”。
臀博