
On Jun 1, 2020, at 7:37 PM, Alejandro Serrano Mena
wrote: - I am surprised by the complicated way to introduce that "~" and "[]" are built-in to the language, by means of a new "Data.BuiltinTypes" which is always in scope, unless you disable with another extension. I would be very happy to have those are wired-in types in the language, which cannot be overriden.
Quite separately from the rest of the proposal, this aspect might be seen as a side benefit. When -XStrict was introduced, people asked whether -XStrict made Haskell a strict language. Though it's not the only reason, one "no" answer was justified by the fact that built-in types with privileged syntax (i.e. lists and tuples) are always lazy. By allowing users to define and import/export these types themselves, some users can choose to use strict versions. Note that such a choice would be entirely local to a module, and mediated by familiar import/export of identifiers. Another way to see this: -XRebindableSyntax allows changing the meaning of privileged syntax in terms, but nothing yet allows such a change in types. If a proposal came along that included only the ability to redefine and import/export built-in types -- without anything else about punning or extending lookup rules -- I would probably be ever-so-slightly against, just because of the annoyance of having to suppress the automatic import (-XNoImplicitBuiltIntTypes, in this proposal). But I think extra benefits of this proposal make rebound types worthwhile, and I also think the rebound types would find uptake in our community independent of the rest of this proposal. Richard