The goals for this assignment are increasing your skills with
 Writing Scheme functions
 Using recursion with flat lists
 Using lists to structure data
You can use the solution to any exercise as a helper function in subsequent exercises, and you can also write standalone helper functions..
Exercises
Part 1  Lists as structures
 Write a function merge that merges two sorted lists of numbers onto one sorted list,
the way MergeSort works.
 (merge '(1 4 5) '(2 3 4 6)) returns (1 2 3 4 4 5 6)
 Write a sort function for lists of numbers. Don't get the idea from (1) that you should do MergeSort. Try InsertionSort.
 (sort '(5 1 8 3 7)) returns (1 3 5 7 8)
 Write function containssublist that determines if a list contains a particular sublist:.
 (containssublist '(2 3 4) '(1 2 3 4 5) ) returns #t
 (containssublist '(2 3 4) '(1 2 5 3 4)) returns #f
 Write function rembersublist that removes the first occurrance of the sublist from the given list
 (rembersublist '(2 3 4) '(1 2 3 4 5 ) ) returns (1 5)
Part 2  Association Lists
Flat lists aren't a very good way to store data. An obvious improvement is to have the list consist of elements, each of which is itself a list, representing the data for one individual. For example, we might make a phonebook as a list of name, phone number pairs. Such a structure is called an association list. For example,
(define phonebook
'( (barbara 7751234) (luke 7742839) (nick 7750912) (valerie 7759043) ))

Write function (phonenumber person phonebook) that returns the phone number of the given person, or the atom 'disconnected if there is no entry for the person.
With the phone book defined above (phonenumber 'nick phonebook) returns 7750912.
 Write funtion (person phonenumber phonebook)that returns the name of the person with the given phone number.
So (person '7750912 phonebook) returns nick.
Part 3  Recursive Styles
 Write function (length lat) that returns the length (number of elements) of lat, and does it by calling an accumulatorpassing style function (lengtha lat acc). Your lengtha function should be tailrecursive.
So (length '(a b c)) returns 3
 Write function (count a lat) that returns the number of occurrences of atom a in lat, and does it by calling an accumulatorpassing style function (counta a lat acc). Your counta function should be tailrecursive.
So
(count 'x '(a b x d c e x x a x)) returns 4.
 Write function (length2 lat) that returns the length of lat and does it by calling a continuationpassing style function (lengthk lat acc). Your lengthk function should be tail recursive.
So (length2 '(a b c)) returns 3
 Write function (count2 a lat) that returns the number of occurrences of atom a in lat and computes it by calling a continuationpassing style function (countk n k). Your countk function should be tail recursive.
So (count2 'x '(a b x d c e x x a x)) returns 4.