Problem: write a function split which takes a list and divides it
into two lists of equal length -`split' down the middle.
For example split([1,2,3,4] should give ([1,2],[3,4]);

Now there is a problem with this `specification': What should our function do if the list has an odd length? The first thing we need to do when solving a problem is to make sure that the problem is well-defined. Clearly here it is not.
So let's have another go:

Problem: write a function split which takes a list and divides it
into two lists of equal length if the list's length is even. if the list's length is odd then the right hand list should have the extra element.
For example split([1,2,3,4] should give ([1,2],[3,4]) and
split([1,2,3,4,5] should give ([1,2],[3,4,5])
That's better! Now let's try and solve the problem using top-down design.