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