Section 1.1 Exercises (Responses Have Answers)
Brad Beyenhof
bbeyenhof at gmail.com
Thu Jan 24 10:37:17 PST 2008
On Jan 24, 2008 9:12 AM, David Brown <kplug at davidb.org> wrote:
> On Thu, Jan 24, 2008 at 09:08:11AM -0800, Mark Schoonover wrote:
>
> >So, is Scheme normal or applicative order? Since it the interpretor simply
> >kept going, it's telling me it's normal order. Funny thing is, it never quit
> >running, you'd think it would eventually run out of memory or something.
> >Maybe I didn't let it go long enough?
>
> Quoting SICP:
>
> This alternative ``fully expand and then reduce'' evaluation method is
> known as normal-order evaluation, in contrast to the ``evaluate the
> arguments and then apply'' method that the interpreter actually uses,
> which is called applicative-order evaluation.
>
> Scheme is definitely applicative-order, as are most programming languages.
>
> Scheme requires a special performance characteristic concerning tail
> recursion (which is discussed later). All scheme interpreters are required
> to evaluate 'p' in such a way that it never consumes memory. In fact, this
> technique is how we will later make loops.
This evaluation-order thig really tripped me up when I tried to go
through SICP on my own a while ago, which is part of why I never got
through 1.2 that time.
So, am I getting this right?
*Applicative order: evaluates each argument in order (both operator
and operands are "arguments" in this sense), only looking at an
argument farther down the line if it's called for.
*Normal order: expand every argument to primitive data or functions,
then reduce the expression by combining the primitives.
--
Brad Beyenhof http://augmentedfourth.com
The history of popular music is littered with great partnerships.
Rodgers had his Hammerstein, Lennon had his McCartney, and Lloyd Webber
had... his photocopier... ~Humphrey Lyttleton
More information about the KPLUG-LPSG
mailing list