
On Wed, Mar 01, 2006 at 11:00:41AM +0000, Malcolm Wallace wrote:
Thus, although I agree that none is ready for inclusion in Haskell-prime, I think we do need some mechanism for experimental records to be tried out in real Haskell implementations before the Haskell-double-prime committee starts its work.
Perhaps, taking the extensions-layering idea, we could say that the current named-fields are encapsulated as an "extension that is part of the standard". Implementations could then introduce a flag to switch off this particular extension (current records) in conjunction with flags to switch on experimental replacements. This would give a certain flexibility for users to play with different systems, and the breaking of compatibility would be explicitly notated, either by the build options, or using a proposal like ticket #94.
My suggestion is that we separate out everything from the Report to do with named-field records into something like a self-contained addendum. Whilst still an official part of the language standard, it might also be marked as a possibility for future removal. This would make it clear what parts of the language could be changed (or re-used without conflict) in an alternative records system.
Sounds like a good idea to me, if it can be done. We might want to do the same thing with FDs (assuming we come up with a form good enough for Haskell'). There will be a question of how contagious these extensions are, e.g. am I using extension X if I import a module that uses it?