3
는 다음이 허용됩니다 :내보내기 중복 레코드 필드 <code>-XDuplicateRecordFields</code>와
{-# LANGUAGE DuplicateRecordFields #-}
module Baz(Foo(..), Bar(..)) where
import Foo (Foo(..))
import Bar (Bar(..))
:
Foo
이 모듈
Bar
에 정의 된 모듈
Foo
및
Bar
에 정의 될 때
{-# LANGUAGE DuplicateRecordFields #-}
module Baz(Foo(..), Bar(..)) where
data Foo = Foo {qux :: Int}
data Bar = Bar {qux :: String}
그러나, 내가 컴파일 오류가
Conflicting exports for ‘qux’
나는 무엇을 하려는지 equiv 첫 번째 예를 들었다. 데이터 유형이 원래 정의 된 위치는 중요하지 않습니다. GHC 8에서 지원되는 것입니까?
이 잘 버그 수 있습니다, 당신은 [보고해야한다 (https://ghc.haskell.org/trac/ghc/wiki/ReportABug). –
이것은 구현의 한계 일 수 있습니다. 동일한 모듈에서 두 개의 동일한 이름의 필드를 정의하기 때문에 일반적으로이 확장이 필요합니다. 다른 모듈에서 그렇게하는 것은 이미 자격이있는 가져 오기를 사용하여 명확 해지기 때문에 이미 OK입니다. 아마도 위와 같은 다른 경우는 GHC 개발자가 고려하지 않았을 것입니다. – chi