[Haskell-cafe] an idea for modifiyng data/newtype syntax: use `::=` instead of `=`
Lars Hupel
lars at hupel.info
Sat Aug 8 14:29:22 UTC 2015
Hi Alexey,
> I think that if `::=` was used instead of `=` in `data` and `newtype` definitions, this would suggest to a newcomer that the syntax of the two sides might be different, and would helpfully remind of the Backus–Naur Form for syntax rules. I think that a newcomer to Haskell, like myself, would have had a better chance of guessing the meaning of
>
> type Name = String
> data Date ::= Date Int Int Int
> data Anniversary ::= Birthday Name Date | Wedding Name Name Date
there is already an alternative syntax for declaring datatypes:
data Date where
Date :: Int -> Int -> Int -> Date
data Anniversary where
Birthday :: Name -> Date -> Anniversary
Wedding :: Name -> Name -> Date -> Anniversary
This is called "GADT syntax" and can be enabled with -XGADTSyntax in GHC.*
Cheers
Lars
* The underlying machinery also extends the fragment of admissible
datatype declarations beyond what is possible with the standard syntax.
See:
<https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/data-type-extensions.html>
More information about the Haskell-Cafe
mailing list