Subject: Re: [Edu-sig] Now I went and did it
Daniel Yoo
dyoo@hkn.eecs.berkeley.edu
Sun, 8 Oct 2000 15:45:15 -0700 (PDT)
> At 04:15 PM 10/8/00 -0400, you wrote:
> >I find myself become more of an instant nutcase than testcase when I look at
> >even this trivial example:
> >
> >(define (area-of-disk r)
> > (* 3.14 (* r r)))
> >
> >A voice inside my head starts saying "No. Stop no!"
>
> Jason,
> I've been programming C since 1984, and my reaction is identical to yours.
> Whatever that thing is, it's not normal C/Python/Perl/fortran syntax, nor
> is it reverse polish as far as I can see. I cannot *even imagine* how a kid
> would understand that syntax. Personally, I'd feel much better if it were
I'm a Python user, but I'll try to defend Scheme in this respect, because
I really believe in Scheme's beauty. *grin*
I think part of what feels weird is the training we have, in both our
languages and in math classes, in distinguishing between regular
functions, (sin(x), exp(e), ...) and infix operators (+, *, ...). Many
languages make this distinction --- Scheme is one of the languages that
doesn't.
Scheme syntax makes a lot more sense when you consider everything to be a
regular function. For example, let's rename the '*' "operator" to a
function called 'multiply':
(define multiply *) ;; just a renaming
(define pi 3.14) ;; another renaming
(define (square r) (multiply r r)) ;; for convenience
(define (area-of-disk r)
(multiply pi (square r))
Also, by not making the math functions as explicitly binary infix
operators, it allows one to express:
"multiply 2, 3, 4, and 5"
as
(* 2 3 4 5)
which is pretty nice, I think.
Hopefully, this makes it a little more explicity that Scheme uniformly
treats all functions the same, even the infix math operators.