haskell – 导出重复记录字段

使用-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(..))

‘qux’的出口冲突

我想我想要做的就是第一个例子;最初定义数据类型的位置无关紧要. GHC 8是否支持这种事情?

最佳答案 我发布了一个错误
here.但是,我也偶然发现了一个解决方法:

如果我将编译指示放在Foo.hs或Bar.hs中,GHC会接受该程序.也就是说,以下编译:

{-# LANGUAGE DuplicateRecordFields #-}
module Foo(Foo(..)) where
data Foo = Foo {qux::Int}

module Bar(Bar(..)) where
data Bar = Bar {qux::String}

module Baz(Foo(..),Bar(..)) where
import Foo (Foo(..))
import Bar (Bar(..))
点赞