C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 10 of 13

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.


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