
On 01/12/2008 00:04, Duncan Coutts wrote:
On Sun, 2008-11-30 at 18:37 -0500, Gwern Branwen wrote:
Ah, I see. I'd not looked that closely. It's this bit you're referring to:
type OccName = PackedString mkOccName :: String -> OccName occString :: OccName -> String
type ModName = PackedString mkModName :: String -> ModName modString :: ModName -> String
type PkgName = PackedString mkPkgName :: String -> PkgName pkgString :: PkgName -> String
Technically that's not an abstract api so changing the type alias could break programs, though I agree that it may be unlikely. I would argue that it's less unlikely than richly deserved. :) (I find it difficult to imagine why a TH hacker would deliberately tunnel through the alias, personally.)
Unless there's some sort of low-level binary API compatibility you are referring to? No, just the source level API.
OK. Is the previous issue a fatal objection or can we just make the change and upload a new TH?
How about making a library proposal to change them to abstract newtypes, then we can change the internal representation at will.
I would not object to that, but then I'm not a TH hacker and they deserve the chance to comment.
It's a simple change, and we really ought to drop the packedstring package. I'll make a proposal. Cheers, Simon