
	Haskell: The Craft of Functional Programming
	Simon Thompson
	(c) Addison-Wesley, 1999.

	Chapter 1

	The Pictures example code is given in the file Pitures.lhs.
	This file can be used by importing it; more details are given in
	Chapter 2.

>	module Chapter1 where
>	import Pictures hiding (rotate)

A first definition, of the integer value, size.

>	size :: Int
>	size = 12+13

Some definitions using Pictures.

Inverting the colour of the horse picture, ...

>	blackHorse :: Picture
>	blackHorse = invertColour horse

... rotating the horse picture, ...

>	rotateHorse :: Picture
>	rotateHorse = flipH (flipV horse)

Some function definitions.

To square an integer, ...

>	square :: Int -> Int
>	square n = n*n

... to double an integer, and ...

>	double :: Int -> Int
>	double n = 2*n

... to rotate a picture we can perform the two reflections,
and so we define

>	rotate :: Picture -> Picture
>	rotate pic = flipH (flipV pic)

A different definition of rotateHorse can use rotate

>	rotateHorse1 :: Picture
>	rotateHorse1 = rotate horse

where the new definition is of a different name: you can't change a definition
in a script.

Defining rotate a different way, as a composition of functions; see the
diagram in the book for a picture of what's going on.

>	rotate1 :: Picture -> Picture
>	rotate1 = flipH . flipV

The definitions of the functions modelling pictures are in the file
Pictures.lhs.

