7stud bbxx789_05ss at yahoo.com
Thu Mar 26 16:43:24 EDT 2009

```Michael Mossey <mpm <at> alumni.caltech.edu> writes:

>
> In RWH, in the exercises at the end of the book,

There are no exercises at the end of the book.

> I was told to write a
> function that averages the integer values in a list. I wanted to do this
> using on the tools we had been presented, which did not include
> 'length'.

Ok. That sounds like you are working on the exercises for chapter 3
on p.69, specifically exercise 3.  The length function was introduced
before the sum function, which I see you are using in your
function definition.  See p. 15. The length function was also
mentioned in exercise 1, and the instructions for exercise 3 mention
using the length of the list.

> So I thought of writing a recursive function in which each
> case passes an accumulator of the "sum so far" as well as a count of
> node "up to the point", and the base case does the actual division. I
> was wondering if there is a better way of doing it (using the just ideas
> up to chapter 3, so no length, no higher order functions, no foldr/foldl
> or map).
>
> myAvg' :: Int -> [Int] -> [ Double ] -> Double
> myAvg' sum count []     = sum / fromIntegral count
> myAvg' sum count (x:xs) = myAvg' (x + sum) (n + 1) xs
>

Use variables that are defined?

[1 of 1] Compiling Main             ( ehask.hs, interpreted )