openlang

能明确消除记录更新的歧义吗?

后续讨论 3

顺着彼此的依据读下去
  1. 固定链接

    使用 RecordWildCards 的话,可以写成 case recordA of MkA {..} -> MkA {c = 17, ..},不过我也觉得不太理想。

    要是能直接写 MkA {c = 17, ..recordA},把 recordA 的所有字段带进新记录里,那就好了。

    从英语翻译查看原文
  2. 固定链接

    或者这样

    main = do
        print $ let MkA {..} = recordA in MkA {c = 17, ..}

    虽然语法很难看,但它确实清楚地说明,这是在分配全新的数据,而不是原地修改已有数据。所以我更喜欢类似下面这样的写法

    MkA { c = 17
        , .. = recordA
        }
    从英语翻译查看原文

同一个问题的其他角度

  1. 怎样继承另一个类里面的类?

    你好, 在一个我无法修改代码的包里,类的层次结构如下。 我想给 Inner 加个方便使用的包装,但因为 Inner 依赖外层实例,目前只做到把它放进外层类的子类里面。 可惜,在多个地方继承 Outer,就意味着每个新子类里都得重复这个方便使用的 ca…

    回复 1最近活动 scala
  2. 比较 Lean4 中的 have 和 let 绑定

    我发现下面两个表达式 以及 行为完全相同。证明定理时也是这样。 它们可以互换吗?区别在哪里?

    回复 3最近活动 lean-4
  3. 初始化以字符串数组为值的 TypeScript Map

    我在创建一个 Map,其中每个条目都保存字符串数组。怎样在一条语句中同时声明类型并完成初始化? 我(天真地)这样试了一下。 结果是下面这个错误。

    回复 2最近活动 typescript