Non-punning list and tuple syntax (-XListTuplePuns, -XNoListTuplePuns)
This ticket is to track the implementation of [GHC Proposal #475](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0475-tuple-syntax.rst) "Non-punning list and tuple syntax".
I intend to break the implementation into multiple parts, so here's a checklist for things that have been implemented and merged so far:
* [x] Export `Solo(MkSolo)` from `GHC.Tuple` (2463df2f)
* [x] Export `Unit`, `Tuple<n>` from `GHC.Tuple` (a13affce)
* [x] Export `CUnit`, `CSolo`, `CTuple<n>` from `GHC.Classes`, `GHC.Exts` (d91d00fc)
* [x] Export `Unit#`, `Solo#`, `Tuple<n>#`, and `Sum<n>#` from `GHC.Exts` (d91d00fc)
* [x] Export `List` from `GHC.Types` and `GHC.List` (02279a9c)
* [x] Create `Prelude.Experimental` and re-export `Unit`, `Solo`, `Tuple<n>`, `CUnit`, `CSolo`, `CTuple<n>`, `List` (d91d00fc)
* [x] Implement the `ListTuplePuns` extension to control parsing and pretty-printing (d91d00fc)
Postponed tasks tracked in separate tickets:
* Remove the `Solo` pattern synonym from `Data.Tuple` (#27180)
* Define type families `Tuple`, `Constraints`, `Tuple#`, `Sum#` (#27179)
* Pretty-print tuples and sums using type families (#27181)
issue