在GHC 8:如何消除選擇器功能的歧義?
{-# LANGUAGE DuplicateRecordFields #-}
data Dog = Dog { name::String }
data Human = Human { name::String }
dog = Dog "Spike"
main = putStrLn $ name dog
此代碼不能編譯:
Ambiguous occurrence `name'
It could refer to either the field `name', defined at A.hs:4:22
or the field `name', defined at A.hs:3:18
如何正確取回我的狗的名字嗎?
啊,模棱兩可的記錄字段......不知道該kludgy修復擴展鏈是無限的嗎?如果是,我們需要一個DisambiguateRecordFieldsDisambiguationExte nsion'的擴展? - ...一定要看看[尼基塔沃爾科夫的'唱片庫](https://nikita-volkov.github.io/record/),這應該使這些擴展完全沒有必要。 - (FTR:我不認爲這些擴展名的作者做得不好,事實上我過去使用過'RecordWildCards',發現它工作得很好。但是,我敢說它總體上不是正確的方法) – leftaroundabout