12

AModuletypeclassでモジュールを作成するとFoo

module AModule where
class Foo a where
   bar :: a

そして、別のモジュールでは、修飾されたBModuleインポートを行い、いくつかの型を のインスタンスにAModuleしようとします。Foo

module B where
import qualified AModule as A
instance A.Foo Int where
   A.bar = 0

GHCは「結合位置の修飾名: A.bar」と教えてくれます。

私が理解していることから、これはGHC チケット 3197に関連しており、修正済みとラベル付けされています。GHC 6.12.1 を実行していますが、まだエラーが発生します。ここで何か誤解しているだけですか?

4

1 に答える 1

18

A.インスタンス宣言の内側は必要ありません( Haskell 98 レポート §4.3.2を参照)。

以下は 6.12.3 でコンパイルされます。

instance A.Foo Int where    -- # A. here
   bar = 0                  -- # no A. here

main = print (A.bar :: Int) -- # A. here
于 2010-10-25T10:04:04.697 に答える