Question about something in Hudak's book

Ludovic Kuty kuty@advalvas.be
Wed, 13 Mar 2002 00:07:51 +0100


Hello,

I have just begun reading Hudak's The Haskell School of Expression
and i am wondering something about the manner he calculates
the area of a polygon (made of vertices) on page 27.

He wrote:

area(Polygon (v1:vs)) = polyArea vs
  where  polyArea :: [Vertex] -> Float
            polyArea (v2:v3:vs') = triArea v1 v2 v3 + polyArea(v3:vs')
            polyArea _ = 0

i do not understand why variable v1 is pattern-matched in
the definition of area and made "global" to polyArea instead
of doing it with polyArea like this:

area(Polygon vs) = polyArea vs
  where  polyArea :: [Vertex] -> Float
            polyArea (v1:v2:v3:vs') = triArea v1 v2 v3 + polyArea(v3:vs')
            polyArea _ = 0

Is it an idiom or some sort of optimization ?
Or just the way he likes it ?

TIA

Ludovic Kuty