text: See Records for the bigger picture. This is a proposal to solve the records name-spacing issue with name-spacing and how to expand on that to make record access more convenient.).
  Other FP languages where I looked for a record implementation but it appeared they have no solution for records with the same fields (my information could be wrong/out-dated) ocaml, oz.
  I couldn't find great specific information on record implementation ML variants. Best I can tell, SML does not allow records in the same module with the same field. Records from other modules require name-spacing or must be opened up similar to Agda. SML# supports record field polymorphism as per the overloaded records implementation.
  Roy, a functional language that targets javascript, does have record field polymorphism (which makes a lot of sense in that context).
  Agda: A case for why name-spacing alone is a good enough solution
  - You can use a type synonym to abbreviate the namespace part (as
  shown above.)
  -.:
  type family F a b data instance F Int [a] = Mk { f :: Int } g :: F Int b -> () h :: F a [Bool] -> () k x = (g x, x.f, h x)
  Consider type inference on k. Initially we know nothing about the type of x.
  - From the application (g x) we learn that x's type has shape (F Int <something>).
  - From the application (h x) we learn that x's type has shape (F <something else> [Bool])
  - Hence x's type must be (F Int [Bool])
  - And hence, using the data family we can see which field f is intended.
  Notice that
  a) Neither left to right nor right to left would suffice b) There is significant interaction with type/data families
  (and I can give you more examples with classes and GADTs)
  c) In passing we note that it is totally unclear how (Plan A)
  would deal with data families
  This looks like a swamp. In a simple Hindley-Milner typed language you might get away with some informal heuristics, but Haskell is far too complicated..
  Frege solution: simple type resolution
  This is overly-simplistic for Haskell (see above) equivalent to T.{x=} a.