[plt-scheme] critique of some code
On Dec 7, 2009, at 7:54 AM, Prabhakar Ragde wrote:
> Matthias wrote:
>
>> You can also assign it to those of your students who understand
>> accumulators (which is what many loops require, but we let students
>> loose on for/do/while/repeat/rinse/one-more-time with nothing but
>> intuition).
>
> I would characterize the solution as structural recursion, since the accumulator is counting up towards a known bound. I know these categories are fuzzy at the edges, but my point is that I think this is a fair exercise in the "structural recursion on two values" part of an HtDP-based course. I often assign a similar question (using lists of symbols, and producing true/false instead of an index) at this point. --PR
Accumulator-based design doesn't stand by itself. It is always added to structural or generative recursion, meaning you have this grid:
plain | w/ accu
structural |
--------------------------
generative |
There are examples in the book for all four kinds of things.
;; ---
To recognize "structural w/ accumulator", ask yourself whether the conditional dispatch takes the changing argument (here the index into the string) into account. If so, you are looking at a multi-argument structural design. If not, you should look for the second symptom of accumulator design, namely, whether the second argument describes a fixed relationship between those parts of the first changing argument and its original value. A good designer writes down an accumulator statement for this. See my code.
Hth -- Matthias