RebindableSyntax Strangeness

Hi Cafe, I have encountered the following puzzling behaviour from a very simple program: Consider -- {-# LANGUAGE RebindableSyntax #-} module A where import Data.Time running this with ghci gives: A> :i UTCTime type UTCTime :: * data UTCTime = UTCTime {utctDay :: Day, utctDayTime :: DiffTime} -- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’ instance [safe] Eq UTCTime -- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’ instance [safe] Ord UTCTime -- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’ instance [safe] Show UTCTime -- Defined in ‘time-1.9.3:Data.Time.LocalTime.Internal.ZonedTime’ instance [safe] FormatTime UTCTime -- Defined in ‘time-1.9.3:Data.Time.Format.Format.Instances’ instance [safe] Read UTCTime -- Defined in ‘time-1.9.3:Data.Time.Format.Parse’ instance [safe] ParseTime UTCTime -- Defined in ‘time-1.9.3:Data.Time.Format.Parse.Instances’ Now uncomment the first line (RebindableSyntax) and rerun it: A> :i UTCTime type UTCTime :: * data UTCTime = UTCTime {utctDay :: Day, utctDayTime :: DiffTime} -- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’ instance [safe] FormatTime UTCTime -- Defined in ‘time-1.9.3:Data.Time.Format.Format.Instances’ instance [safe] ParseTime UTCTime -- Defined in ‘time-1.9.3:Data.Time.Format.Parse.Instances’ And all of the nice instances for UTCTime have disappeared. Why? Best wishes, Henry Laxen

Hi Henry, RebindableSyntax implies NoImplicitPrelude, which puts Eq, Ord, Show, and Read out of scope. Cheers, Li-yao On 8/31/2020 10:12 AM, Henry Laxen wrote:
Hi Cafe,
I have encountered the following puzzling behaviour from a very simple program:
Consider
-- {-# LANGUAGE RebindableSyntax #-} module A where import Data.Time
running this with ghci gives:
A> :i UTCTime type UTCTime :: * data UTCTime = UTCTime {utctDay :: Day, utctDayTime :: DiffTime} -- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’ instance [safe] Eq UTCTime -- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’ instance [safe] Ord UTCTime -- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’ instance [safe] Show UTCTime -- Defined in ‘time-1.9.3:Data.Time.LocalTime.Internal.ZonedTime’ instance [safe] FormatTime UTCTime -- Defined in ‘time-1.9.3:Data.Time.Format.Format.Instances’ instance [safe] Read UTCTime -- Defined in ‘time-1.9.3:Data.Time.Format.Parse’ instance [safe] ParseTime UTCTime -- Defined in ‘time-1.9.3:Data.Time.Format.Parse.Instances’
Now uncomment the first line (RebindableSyntax) and rerun it:
A> :i UTCTime type UTCTime :: * data UTCTime = UTCTime {utctDay :: Day, utctDayTime :: DiffTime} -- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’ instance [safe] FormatTime UTCTime -- Defined in ‘time-1.9.3:Data.Time.Format.Format.Instances’ instance [safe] ParseTime UTCTime -- Defined in ‘time-1.9.3:Data.Time.Format.Parse.Instances’
And all of the nice instances for UTCTime have disappeared. Why?
Best wishes, Henry Laxen _______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
participants (2)
-
Henry Laxen
-
Li-yao Xia