gpt4 book ai didi

haskell - 使用 DuplicateRecordFields 消除记录更新的歧义

转载 作者:行者123 更新时间:2023-12-03 09:04:51 24 4
gpt4 key购买 nike

我正在使用 DuplicateRecordFields (+OverloadedLabels) 扩展,但我遇到了无法弄清楚如何在记录更新中消除歧义的情况。

这是一个简化的示例:

data A = A { name :: String }
data B = B { name :: String }

combine :: A -> B -> A
combine a b = a { name = name b }

有什么办法可以实现这个功能吗?

最佳答案

我在之前关于 -XDuplicateRecordFields 的问题之一中回答过,目前 GHC 不会从其参数推断记录字段的类型:

您现在可以做的是显式指定 name 提取器的类型,如下所示:

{-# LANGUAGE DuplicateRecordFields #-}

data A = A { name :: String }
data B = B { name :: String }

combine :: A -> B -> A
combine a b = a { name = (name :: B -> String) b }

关于haskell - 使用 DuplicateRecordFields 消除记录更新的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47854019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com