https://www.haskell.org/onlinereport/lexemes.html#ids
In the above link, there is the following syntax:
```haskell
varid -> (small {small | large | digit | ' })
conid -> large {small | large | digit | ' }
reservedid -> case | class | data | default | deriving | do | else
| if | import | in | infix | infixl | infixr | instance
| let | module | newtype | of | then | type | where | _
```