Friends
As you know
- We are trying to use “Trees That Grow” (TTG) to move HsSyn towards a situation in which GHC is merely
a client of a generic HsSyn data type that can be used by clients other than GHC.
- One sticking point has been the question of attaching source locations. We used to have a “ping-pong” style, in which very node is decorated with a source location, but that’s a bit
more awkward in TTG.
- This wiki page outlines some choices, while
ticket #15495 has a lot of discussion.
- HEAD embodies Solution A. But it has the disadvantage that the type system doesn’t enforce locations to be present at all. That has undesirable consequences (eg
ticket #17330)
- The proposal is to move to Solution D on that page; you can see how it plays out in
MR !1970.
- (I think Solutions B and C are non-starters by comparison.)
If you care, please check out the design and the MR. We can change later, of course, but doing so changes a lot of code, including client code, so we’d prefer not to.
Let’s try to converge by the end of the week.
Thanks
Simon