3
隨着-XDuplicateRecordFields
,下面是允許的:出口重複記錄的字段
{-# LANGUAGE DuplicateRecordFields #-}
module Baz(Foo(..), Bar(..)) where
data Foo = Foo {qux :: Int}
data Bar = Bar {qux :: String}
但是,我得到一個編譯錯誤時Foo
模塊Foo
和Bar
中定義的模塊Bar
中定義:
{-# LANGUAGE DuplicateRecordFields #-}
module Baz(Foo(..), Bar(..)) where
import Foo (Foo(..))
import Bar (Bar(..))
Conflicting exports for ‘qux’
我想我想要做的是equiv與第一個例子相同;數據類型最初定義的位置應該沒有關係。 GHC 8支持這種事情嗎?
這可能是一個錯誤,你應該報告(https://ghc.haskell.org/trac/ghc/wiki/ReportABug)。 –
這可能是實施的限制。通常這個擴展是需要的,因爲你想在同一個模塊中定義兩個相同名字的字段。在不同的模塊中這樣做已經可以,因爲可以使用合格的導入來消除歧義。 GHC開發人員可能根本沒有考慮像上面那樣的其他情況。 – chi