Changed .hi files are a nuisance because they make Make rerun all GHC compilations
which import the relevant module. I thought I would not have .hi changing
today when I modified the implementation of an interface, but it did.
According to -hi-diffs the difference is:
1 lvl18 :: [PrelBase.Char] {-## __A 0 __U (PrelBase.unpackCStringzh "execOneWayCmd
") ##-} ;
! 1 lvl20 :: [PrelBase.Char] {-## __A 0 __U (PrelBase.unpackCStringzh
"Expect.hs:441|case") ##-} ;
1 lvl22 :: RegularExpression.MatchResult -> PrelIOBase.IO [PrelBase.Char] {-## __A 1
__S L __U (\ matchResult :: RegularExpression.MatchResult -> return @ [PrelBase.Char]
(case matchResult of wild { RegularExpression.MatchResult ds1 matched ds2 ds3 ->
matched })) ##-} ;
--- 29,31 ----
1 lvl18 :: [PrelBase.Char] {-## __A 0 __U (PrelBase.unpackCStringzh "execOneWayCmd
") ##-} ;
! 2 lvl20 :: [PrelBase.Char] {-## __A 0 __U (PrelBase.unpackCStringzh
"Expect.hs:461|case") ##-} ;
1 lvl22 :: RegularExpression.MatchResult -> PrelIOBase.IO [PrelBase.Char] {-## __A 1
__S L __U (\ matchResult :: RegularExpression.MatchResult -> return @ [PrelBase.Char]
(case matchResult of wild { RegularExpression.MatchResult ds1 matched ds2 ds3 ->
matched })) ##-} ;
If you ignore the lines of context etcetera, you'll see that the difference is
only in a line number "Expect.hs:441" rather than "Expect.hs:461". I submit, mlud,
that line numbers are not something the importing module needs to know about, and
that therefore the location might be better off not inlined . . .