We use these throughout the tutorial to place explanatory text in the program. This can be ignored for now. You can print out the value of an identifier by typing the name of the identifier you wish to evaluate. We will start with some constants as well as their associated type. Remember that Hugs evaluates expressions, not definitions.
Definitions have to be placed in the module.
The type declaration for e1 is not really necessary but we will try to always provide type declarations for values to help document the program and to ensure that the system infers the same type we do for an expression. The type language is used only in the type declarations previously described and declarations of new types, described later. Haskell uses a uniform syntax so that values resemble their type signature as much as possible. However, you must always be aware of the difference between type expressions and value expressions. This is a rather odd error message.