In Chapter 10, Declaring Types and Classes, Dr. Meijer teaches us about type declarations, data declarations, arithmetic expressions, etc. In Haskell, a new name for an existing type can be defined using a

type declaration:



type String = [Char]



String is a synonym for the type [Char].



Like function definitions, type declarations can also have parameters. Type declarations can be nested, but

not recursive.



Nested:



type Pos = (Int,Int)

type Trans = Pos -> Pos



Illegal recursion:



type Tree = (Int,[Tree])



A completely new type can be defined by specifying its values using a data declaration:



data Bool = False | True



Bool is a new type, with two new values False and True.



Get the presentation slides here



Chapter 1

Chapter 2

Chapter 3

Chapter 4

Chapter 5

Chapter 6

Chapter 7

Chapter 8

Chapter 9

Chapter 10

Chapter 11

Chapter 12

Chapter 13