... | ... | @@ -42,12 +42,6 @@ And `type` gets an extra production: |
|
|
|
|
|
(modulo [FixityResolution](fixity-resolution)). Also, there are obvious changes to the grammar for `type`, `data`, and `newtype` declarations.
|
|
|
|
|
|
|
|
|
Some people use constructors (think of the type a+b). Mirroring this in Haskell would make the transcription more elegantly direct.
|
|
|
|
|
|
|
|
|
I can't think of any down-sides, except the slight loss of consistency ("the hobgoblin of tiny minds").
|
|
|
|
|
|
## Observations
|
|
|
|
|
|
- You may say that it's inconsistent for `(+)` to range over type constructors, because at the value level you have to start data constructors with a ":". But the type level is already funny. The whole type-family idea (including H98 type synonyms) defines things that begin with a capital letter, but which (unlike data constructors) are not head normal forms. Looking further ahead, by the time we have full type-synonym families, they really are *functions* as much as any value-level function is. For example it would be silly to insist on a leading colon here:
|
... | ... | |