Thanks Roberto!

Roberto Zunino wrote:
Chris Kuklewicz wrote:
There is no way to create a "A.hs-boot" file that has all of
  (1) Allows A.hs-boot to be compiled without compiling B.hs first
(2) Allows B.hs (with a {-# SOURCE #-} pragma) to be compiled after A.hs-boot
  (3) Allows A.hs to compiled after A.hs-boot with a consistent interface

I thought the following A.hs-boot would suffice:

module A(A) where
data A

There's no need to provide the data constructors for type A. Does this violate any of the goals above?

Regards,
Zun.


I tried that experiment.  The failure is complicated, and triggers be a ghc bug.

Hmmm... the bug for

module A(A) where
data A
  deriving Show

using "ghc -c -XGeneralizedNewtypeDeriving A.hs-boot" is

A.hs-boot:2:0:ghc-6.8.3: panic! (the 'impossible' happened)
  (GHC version 6.8.3 for powerpc-apple-darwin):
        newTyConEtadRhs main:A.A{tc r5z}

Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

Is this a known bug?

But now I see that

module A(A(..)) where
import B(B)
data A = A B | End
  deriving Show


does work.  And avoids the bug!

--
Chris

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to