| 40 | | 2. '''[wiki:Records/NameSpacing Frege-derived Records] (FDR)'''. Uses (Plan A) + (Plan B). |
| 41 | | 3. '''[http://hackage.haskell.org/trac/haskell-prime/wiki/TypeDirectedNameResolution Type Directed Name Resolution] (TDNR)'''. Pure (Plan B), but without abstraction. |
| 42 | | 3. '''Are there any other approaches?''' |
| | 40 | 2. '''[http://hackage.haskell.org/trac/haskell-prime/wiki/TypeDirectedNameResolution Type Directed Name Resolution] (TDNR)'''. Pure (Plan B), but without abstraction over fields of the same name. |
| | 41 | 3. '''[wiki:Records/NameSpacing Agda style Records] (FDR)''' Pure (Plan A) |
| | 42 | 4. '''[wiki:Records/NameSpacing Frege-derived Records] (FDR)'''. Uses (Plan A) + (Plan B). |
| | 43 | |
| | 44 | 5. '''Are there any other approaches?''' |
| 59 | | With Namespacing this will fail to type check unless the compiler can determine the type of r is either `Record` or `RecordClash`. The advantage of Namespacing is that the implementation is clear, straightforward, and has already been done (in the Frege language, whereas there are still questions as to the feasibility of Overloading). Overloading has seen other downsides in practice. In the words of the Frege author, who abandoned Overloading: |
| | 61 | With other approaches (including TDNR) this will fail to type check unless the compiler can determine the type of r is either `Record` or `RecordClash`. |
| | 62 | |
| | 63 | The advantage of Namespacing is that the implementation is clear, straightforward, and has already been done in Agda and Frege. We can either stop with name-spacing (Agda) or continue on with automatically resolving the field when the dot operator is used. Overloading has seen downsides in practice. In the words of the Frege author, who abandoned Overloading: |