【问题标题】:Why is list concatenation in SML right associative?为什么 SML 中的列表连接是右关联的?
【发布时间】:2020-08-15 03:16:55
【问题描述】:

在 Ullman 的 SML 书中

大多数 不寻常的是 :: (list cons) 和 @ (list concatenation) 运算符是右关联的,这意味着它们分组 像我们见过的大多数运算符一样,从右侧而不是左侧。

我明白cons为什么是右结合的原因:第二个操作数必须是一个列表,返回的是一个列表。

鉴于 SML 中“我们见过的大多数运算符”都是左关联的,为什么 SML 中的列表连接是右关联的?

谢谢。

【问题讨论】:

    标签: list sml ml


    【解决方案1】:

    连接的成本与左操作数的长度成线性关系,因为它必须被复制。因此,x @ (y @ z)(x @ y) @ z 便宜,因为后者会复制列表 x 两次。

    此外,有时您可能希望混合使用 cons 和 concat 运算符 (x @ y :: z),如果它们具有不同的优先级或关联性,这将更加笨拙。

    【讨论】:

      猜你喜欢
      • 2014-11-15
      • 2017-10-29
      • 2014-12-10
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多