
1 Dec
2009
1 Dec
'09
5:18 p.m.
On Tue, Dec 1, 2009 at 3:11 PM, Sean McLaughlin
Say I have the following module:
---------------------------------------- module A ( T(T) , t , val ) where
data T = T { t :: Int }
val :: T val = T 7 ----------------------------------------
When I use A with the following imports, I don't expect this to work, but it does:
import qualified A import A(T(..))
main = putStrLn $ show $ t A.val
The problem is that I explicitly didn't export 't' as an element of T (by not writing T(..)). Am I just misunderstanding how exports work? I couldn't figure out what the correct behavior should be by looking at the 98 report.
Oh interesting. What a crazy corner case. I also feel like your program shouldn't be valid. Maybe it's a bug?