我刚刚将一个项目更新到GHC 9.2.4,一些模块引发了ambiguous-fields
警告。
在阅读有关-XDuplicateRecordFields
的内容时,我了解到在将其用作选择器时,有必要消除不同类型中相同字段名的歧义。
但这部法典:
import Data.Aeson
customDefaultOptions :: Options
customDefaultOptions = defaultOptions {omitNothingFields = True}
newtypeOptions :: Options
newtypeOptions = customDefaultOptions {unwrapUnaryRecords = True}
也引出了这一点:
The record update customDefaultOptions
{unwrapUnaryRecords = True} with type Options is ambiguous.
This will not be supported by -XDuplicateRecordFields in future releases of GHC.
|
7 | newtypeOptions = customDefaultOptions {unwrapUnaryRecords = True}
| ^^^^^^^^^^^^^^^^^^^^^^^^^
然而,customDefaultOptions
的类型是Options
,就像defaultOptions
一样,哪里有歧义?
1条答案
按热度按时间1cosmwyk1#
多亏了K. A. Buhr,我发现
openapi3
公开了一个非常相似的结构。在字段前面加上模块名称,以消除歧义: