From: Josef Eschgfaeller
Subject: Re: Indentation (please stop)
Date: 
Message-ID: <Pine.LNX.4.04.9906301956130.1532-100000@arbzi.zuhause.fe>
Erik Naggum wrote:

> it seems you stick to your non-indentation line with something other
> than willingness to listen to good advice.

Hey, this is becoming a sport. I thought I'm here in a good group with
big people from the Lisp community, where I can learn much, and find
myself in this wrestling ring. I didn't stick at all, I sent 3 lines
and 4 lines of not indented code, which everybody of you big guys could
read easily, read carefully your replies, agreeing in part, sometimes
remaining more doubtful, and thought in the last two days we could stop,
since positions became clear enough. Read the end of my first message
("with no intention of flame") - I'm not the world danger for the Lisp
community.

I shall take much time this summer to learn Lisp well and thought to seek
more useful advice from the list.

I'll reply now to some points, but I was more interested in understanding
here what I cannot find in the books, so perhaps one should conclude
this indentation thread. For example there were also some mistakes
in all that. Anyway, I'm a little surprised, how important indendation
seems to be. I think there is much more in Lisp than indentation.

>> More specifically in Lisp I try to memorize (and to teach to
>> memorize) the shapes which can appear.

> you _teach_ Lisp, too?  those of us who think that Lisp's image among
> young programmers suffers from bad teachers just got a very unwelcome
> confirmation of our worst fears.

Make an agreement - I forget what you said and you forget what I say
in the next lines. Do you really fear that my students will spread from
Ferrara over the continents and ruin Lisp worldwide? How can you call
someone you don't know a bad teacher? Do you know that in many universities
they teach Pascal? I did that 13 years ago. Anyway, I taught 7 hours of Lisp
at the end of the C/C++ course and it was a little success. Young girls seem
to be very able to close parentheses, as opposed to your young programmers.
Next year I'll teach a full year course on Lisp, comp.lang.lisp permitting
and helping I thought. I have some good books here and collected many
articles to read from the web, however, so in case of disaster I shall
organize some Robinson Lisp. But it's not my preferred choice.

Also, you missed the main point, when I wrote that beginners should
memorizes the structures which appear. I think that it is really important
to create an image of little typical pieces of code in their brain,
which they then recognize in more general cases. This means
carefully reading the code, creating by yourself mentally a sort
of stack of dependencies which substitutes the indentation.

I'm a mathematician by origin and know very well how disturbing
unusual notation can be. Writing X: f ---> f for a function instead
of f: X ---> X is an innocent change, but makes already things
uncomfortable. But if one knows exactly what one is speaking about,
it becomes a minor difficulty. Notation in mathematics is very
important, but understanding much more. So I'm trying to understand exactly
what is going on in Lisp, because as a teacher I have to explain
well also those things, which a programmer maybe deals only by experiment
or experience. These little details, which some of you are
knowledgeable about, I not, are surely much more important than
indentation.

>> For example: "A do has the following structure ... Therefore, when you
>> see a do, look first at the assignments, then at the break-condition and
>> the result, then at the single instructions."  And so on. In my opinion
>> this is a good training, and after little time one has no more need to
>> study the indentations, which also takes time and distracts.

> this sounds like a struggling beginner's view, a beginner who struggles
> because he's doing something wrong and don't want to change his ways.

Here I cannot follow your reply. It's an important point. What is
wrong with it? I'm a beginner - I studied Lisp two years ago, mainly
in a good older German book by Mayer, which explains rather well the
underlying data structures, but thought then it were too difficult
for my classes, and changed opinion only this year, because it seemed
easy for them. The students are beginners too. So I think it's o.k.
that they learn how the building blocks in Lisp look.

And why do you think that I don't want to change my opinions? When I
learn something, I change my opinions very often, each time I discover
some new aspect.

>> in fundamental mode), I verify the balance of parentheses with the editor.
> "always in fundamental mode"? there should be a law against that.

Sorry, that's my private problem. I'm very quick in typewriting and
can indent by myself. During the last 1-3 years I wrote much in Python,
where indentation is obligatory - that's not the point.
I'm maintaining a bibliography with over 3500 files and a rather big
Web server, using only Emacs in fundamental mode, and it takes me very
little time. I like Emacs because it's so powerful, but if one prescribes
too much one looses some of that power.

> this often happens to people who don't engage in introspection.

This is pure wrestling. I thought about it before, I read all your
terrific mails, I shall think about again, so what about introspection?
I appreciated most the letters by Gareth McCaughan (British cool, I
like Sherlock Holmes - or Scottish? another flame arriving ...) and
Pierre Mai, which were technical. Other ones I found rather emotional.
Fortunately we are only writing about Lisp. More generally the point
of view, that someone who doesn't follow blindly any uniformization
lacks introspection, should be rather dangerous. Indentation is not
the problem, I can indent how you want, but I'm thinking about
intolerance now.

> lazy people who don't engage in introspection

Sorry, lazy university teachers teach Pascal.

> never learned to use the power of Emacs

Is this your technique of discussion? I appreciated much also some of
your advices on my Lisp questions before, but this seems to be not
your field.

I learned everything I need of Emacs and have an .emacs file full of
little utilities. I don't need the special modes because I type
so fast. How can you judge a person you don't know?

> I'm frankly amazed that you think _others_ are stubborn.

Not at all. Maybe I think it now.

> here's my suggestion: use PPRINT on your forms to see how Common Lisp is
> most commonly formatted.

Beautiful. I shall from now on indent my code in my questions, and if
I should forget, you use print. I tried it, it works well.

> (defun number-list (from to &optional (step 1))
> (do ((element from (+ element step)) (list nil))
> 	((> element to) (nreverse list))
>   (push element list)))

> I would expect a seasoned Lisp programmer not to write this as a function

Now you are critizing non-seasoned Paul Graham.

> rather just write (loop for n from <from> to <to> collect n)

Give me some time please. I find loop rather complicated and it is a
long chapter in Steele. I shall read that later, because it is also
interesting, but before there are many other points I want to master.
I made some little experiments with loop, but systematically it's too
much at the moment.

Everything ready for the next European War. So quickly it goes.

Josef Eschgfaeller
Dipartimento Matematico
Universita' di Ferrara
···@felix.unife.it        e-mail
http://felix.unife.it/    home page

From: Gareth McCaughan
Subject: Re: Indentation (please stop)
Date: 
Message-ID: <86btdxa6gu.fsf@g.pet.cam.ac.uk>
Josef Eschgfaeller wrote:

> Also, you missed the main point, when I wrote that beginners should
> memorizes the structures which appear. I think that it is really important
> to create an image of little typical pieces of code in their brain,
> which they then recognize in more general cases. This means
> carefully reading the code, creating by yourself mentally a sort
> of stack of dependencies which substitutes the indentation.

But you don't *need* to do that, most of the time. Alfred North
Whitehead once said something very wise: that intellectual progress
is largely a matter of reducing the number of things about which
we actually have to think. One thing that indentation does is to
enable you to read code quickly *without* having to think hard
about it; whereas the "mental sort of stack of dependencies" thing,
though it's important to be able to do, requires some concentration.
Usually, that concentration can be used better for other purposes.

Itsperfectlypossibletoreadenglishwithoutspacescapitallettersorpunc
tuationandtheresnoparticularreasonwhyonehastouseanyofthosecrutches
ifonedoesntwanttoitspossibletofollowwhatsgoingoneveninquiteacompli
catedsentencewithnopunctuationbybuildingupcarefullyamentalmodeloft
hesentencestructurebutseehowfrustratingitisifyouhavetodoitformoret
hanabouttensecondsatastretchreadinglispcodeorcodeinanyotherlanguag
eforthatmatterwithoutindentationisabitlikereadingenglishwithoutany
spacescapitallettersorpunctuationyoucandoitbutitspainfulandifyouac
tuallywanttomakeanyuseofwhatyourereadingitreallyslowsyoudownbecaus
eyouretryingtouseyourbrainfortwothingsatonce

Now, maybe that wasn't really so bad. But suppose it had been, not
a piece of general blurb about how hard compressed English is to
read, but a non-trivial technical question, or a hard-to-understand
poem, or a set of crossword clues. That would have been *painful*
(unless you're much cleverer than I am, which perhaps you are).

> I'm a mathematician by origin and know very well how disturbing
> unusual notation can be. Writing X: f ---> f for a function instead
> of f: X ---> X is an innocent change, but makes already things
> uncomfortable. But if one knows exactly what one is speaking about,
> it becomes a minor difficulty. Notation in mathematics is very
> important, but understanding much more.

What would you think of a mathematician who began a seminar by
saying "In what follows, I'm going to write all my arrows the
other way round from what's usual; I'm going to use R to denote
the Riemann sphere (short for Riemann, you see), and Z (short
for Zahlen) to denote the usual real numbers. N will be the set
of negative numbers. I find all this much easier to follow than
the usual conventions. Oh, and I ought to warn you that I
interchange the usual meanings of `tensor' and `torsion'"?
I bet you'd hate him all through that seminar, even if he
proved the Riemann Hypothesis. Of course I'm giving an extreme
example; but that's the sort of effect you get if you say "I'm
going to ignore the unanimous opinion of a generation of computer
folks, and not indent any of my code, because *I* find it easier
to read without the indentation".

>                                         So I'm trying to understand exactly
> what is going on in Lisp, because as a teacher I have to explain
> well also those things, which a programmer maybe deals only by experiment
> or experience. These little details, which some of you are
> knowledgeable about, I not, are surely much more important than
> indentation.

Certainly. And if you ask questions about those details, people
will answer them. Although they might be more reluctant to do so
if you insist on obfuscating your code :-).

>>> in fundamental mode), I verify the balance of parentheses with the editor.
>> "always in fundamental mode"? there should be a law against that.
> 
> Sorry, that's my private problem. I'm very quick in typewriting and
> can indent by myself. During the last 1-3 years I wrote much in Python,
> where indentation is obligatory - that's not the point.
> I'm maintaining a bibliography with over 3500 files and a rather big
> Web server, using only Emacs in fundamental mode, and it takes me very
> little time. I like Emacs because it's so powerful, but if one prescribes
> too much one looses some of that power.

What power do you use by using Emacs in Lisp mode? I don't
understand.

>> this often happens to people who don't engage in introspection.
> 
> This is pure wrestling. I thought about it before, I read all your
> terrific mails, I shall think about again, so what about introspection?
> I appreciated most the letters by Gareth McCaughan (British cool, I
> like Sherlock Holmes - or Scottish? another flame arriving ...)

Thanks! Actually I'm Irish by descent, was born in the USA, and
have lived in England most of my life. I guess that makes me, er,
confused.

> I learned everything I need of Emacs and have an .emacs file full of
> little utilities. I don't need the special modes because I type
> so fast. How can you judge a person you don't know?

The special modes aren't there only in order to save typing.
They're also intended to save thinking, and to save making the
sort of stupid mistakes most of us make (especially when typing
fast). Perhaps you don't make mistakes; but the rest of us do.

And, even if all they did was to speed your typing, wouldn't
it be even better if you (effectively) typed even faster?
Surely everything just scales linearly with typing speed,
so that the proportional improvement is much the same whether
you're very fast or very slow. (Not quite, obviously, since
thinking speed doesn't depend on typing speed.)

Now, maybe you've given all the special modes that might be
useful to you a thorough inspection and tried them for a bit,
and you've found that they didn't help you; if so, fair enough.

> Give me some time please. I find loop rather complicated and it is a
> long chapter in Steele. I shall read that later, because it is also
> interesting, but before there are many other points I want to master.
> I made some little experiments with loop, but systematically it's too
> much at the moment.

A suggestion: don't bother trying to understand everything about LOOP
for the moment. Learn to do easy things with it:
  (loop for i from 1 to n collect ...)
  (loop for i from 1 to n sum ...)
  (loop while ... do ...)
Think of it as a sort of common syntax for all the different
kinds of simple loop you can find in other languages. It *can*
do hairy things too, but even if you never use it for the hairy
things it's handy for simple things.

-- 
Gareth McCaughan            Dept. of Pure Mathematics & Math. Statistics,
················@pobox.com  Cambridge University, England.
From: thi
Subject: Re: Indentation (please stop)
Date: 
Message-ID: <m2rzp1hy0gg.fsf@netcom9.netcom.com>
Josef Eschgfaeller <···@felix.unife.it> writes:

> Make an agreement - I forget what you said and you forget what I say
> in the next lines. Do you really fear that my students will spread
> from Ferrara over the continents and ruin Lisp worldwide? How can you
> call someone you don't know a bad teacher? Do you know that in many
> universities they teach Pascal? I did that 13 years ago. Anyway, I
> taught 7 hours of Lisp at the end of the C/C++ course and it was a
> little success. Young girls seem to be very able to close parentheses,
> as opposed to your young programmers.  Next year I'll teach a full
> year course on Lisp, comp.lang.lisp permitting and helping I
> thought. I have some good books here and collected many articles to
> read from the web, however, so in case of disaster I shall organize
> some Robinson Lisp. But it's not my preferred choice.

everyone teaches by their actions (and sometimes by their words).  good
teachers do not hobble their students, as i fear you are doing.

if you're interested in choice and freedom of expression, the best thing
you can do for your students is to archive these discussions, present
them to the class, and let them decide for themselves.  you may learn
something in the process.

thi
From: Vassil Nikolov
Subject: Re: Indentation (please stop)
Date: 
Message-ID: <l03130301b3a02bc1dee3@195.138.129.91>
On 1999-06-30 19:57 +0200,
Josef Eschgfaeller wrote:

  > Erik Naggum wrote:
  > 
  > > it seems you stick to your non-indentation line with something other
  > > than willingness to listen to good advice.
  > 
  > Hey, this is becoming a sport. I thought I'm here in a good group with
  > big people from the Lisp community, where I can learn much, and find
  > myself in this wrestling ring. I didn't stick at all, I sent 3 lines
  > and 4 lines of not indented code, which everybody of you big guys could
  > read easily, read carefully your replies, agreeing in part, sometimes
  > remaining more doubtful, and thought in the last two days we could stop,

and kept insisting indentation was not essential.  Since we have good
reason to believe indentation _is_ essential, we have been trying to
enlighten you, and also anybody else that may have been reading the
thread.

  [...]
  > Anyway, I'm a little surprised, how important indendation
  > seems to be. I think there is much more in Lisp than indentation.

Indeed.  Also, there is much more in poetry than starting each
verse on a new line, yet somehow poets do do this---just ritual, I
guess, probably sanctified because Homer did it (whoever it
was that wrote the Iliad down, since Homer couldn't actually
do it, being blind).

Fill, 66 characters per line:

No longer mourn for me when I am dead than you shall hear the
surly sullen bell give warning to the world that I am fled from
this vile world, with vilest worms to dwell.  Nay, if you read
this line, remember not the hand that writ it, for I love you so
that I in your sweet memory would be forgot if thinking on me
should make you woe.  Oh, if, I say, you come upon this verse
when I perhaps compounded am with clay, do not so much as my poor
name rehearse but let your love even with my life decay.  Lest
the wise world should look into your moan and mock you with me
after I am gone.

  [...]
  > Do you know that in many universities
  > they teach Pascal? I did that 13 years ago.

After languages such as Scheme, CLU and probably some of the
functional languages, Pascal is a good choice of an educational
programming language (after all, this was its original purpose),
much better than Java or C or C++ as a first-year programming
language.  (Mail flames directly to me and I will summarise to
the group.)

  > Anyway, I taught 7 hours of Lisp
  > at the end of the C/C++ course and it was a little success. Young girls seem
  > to be very able to close parentheses, as opposed to your young programmers.

If Lisp is not about indentation, it is even less about closing
parentheses, first impressions notwithstanding.

  [...]
  > So I'm trying to understand exactly
  > what is going on in Lisp, because as a teacher I have to explain
  > well also those things
  [...]

Let me take this occasion to say that I believe in this: the amount
of what a teacher knows about the subject being taught must be
at least 10 times as much as what the teacher actually says on
the subject.

  [...]
  > I'm maintaining a bibliography with over 3500 files and a rather big
  > Web server, using only Emacs in fundamental mode, and it takes me very
  > little time. I like Emacs because it's so powerful, but if one prescribes
  > too much one looses some of that power.

Does maintaining a server include writing/modifying programs?
If so, why do you miss the chance to improve productivity by using
an appropriate mode?  If not, do you also restrict yourself to fundamental
mode when _writing_ programs?

  [...]
  > Give me some time please. I find loop rather complicated and it is a
  > long chapter in Steele. I shall read that later, because it is also
  > interesting, but before there are many other points I want to master.
  > I made some little experiments with loop, but systematically it's too
  > much at the moment.

This led me to make the following mental experiment.  Consider the
following statement, made extreme for illustrative purposes:

  LOOP is evil, I refuse to use it, I refuse to learn it, it has no
  place as part of Lisp.

Now, imagine that a Lisp programmer says that.  After that, imagine
that a Lisp teacher says that.  There is a difference, isn't there.

Similar to what one of the other posters suggested, I wonder if
there are Lisp students (whether from Ferrara or not) that are
reading this, and I wonder what they would think of it.


Vassil Nikolov
Permanent forwarding e-mail: ········@poboxes.com
For more: http://www.poboxes.com/vnikolov
  Abaci lignei --- programmatici ferrei.
From: Paolo Amoroso
Subject: Re: Indentation (please stop)
Date: 
Message-ID: <377bc465.47754@news.mclink.it>
On Wed, 30 Jun 1999 23:44:06 +0300, Vassil Nikolov <········@poboxes.com>
wrote:

> Similar to what one of the other posters suggested, I wonder if
> there are Lisp students (whether from Ferrara or not) that are
> reading this, and I wonder what they would think of it.

I am a computer science student at the university of Milano, Italy. I took
my latest Lisp class last year. It was my third Scheme class (okay, I
promise that I will join a Lisp Anonymous group to get out of this
addiction :)

My experience shows that students rely on indentation for understanding
Lisp code. I'll tell you an anecdote that shows how much it's important for
them. But first switch your newsreader to its maximum parental control
setting, and make sure there are no kids around :)

At the time of my latest Scheme class, our student lab was equipped with a
couple of HP servers running HP-UX, accessible through about one hundred X
terminals, and a dozen diskless PCs running WFW 3.x. All machines were
connected to a LAN. STk was installed on the Unix systems, 3DScheme (a
commercial educational environment by Schemers, Inc.) on the PCs.

Students were free to decide both the topic of the final programming
project and which Scheme system to use for development. Most of them loved
3DScheme's and DrScheme's automatic indentation and sexp visualization
facilities.

A group of students chose STk for the project. Their "editing cycle" was
rather--how can I say?--"unconventional". They started coding under Unix
with vi (not in Lisp mode) or nedit (if it provides facilities for Lisp
indentation, they weren't used). When the thing became sufficiently messy,
they:

- accessed the files from the Windows PCs via NFS
- loaded them with 3DScheme
- reformatted the code with 3DScheme's integrated editor
- continued editing the freshly formatted files under Unix


Paolo
-- 
Paolo Amoroso <·······@mclink.it>
From: Fernando Mato Mira
Subject: Re: Indentation (please stop)
Date: 
Message-ID: <377BE0FF.3ACB3E46@iname.com>
Paolo Amoroso wrote:

> A group of students chose STk for the project. Their "editing cycle" was
> rather--how can I say?--"unconventional". They started coding under Unix
> with vi (not in Lisp mode) or nedit (if it provides facilities for Lisp

The STk documentation mentions the modes available for Emacs, which include
a classic remote-eval facility. Obviously they were not guided properly.
From: Marco Antoniotti
Subject: Re: Indentation (please stop)
Date: 
Message-ID: <lwbtdvmpwi.fsf@copernico.parades.rm.cnr.it>
Ah! This brings back memories :) ....


·······@mclink.it (Paolo Amoroso) writes:

> On Wed, 30 Jun 1999 23:44:06 +0300, Vassil Nikolov <········@poboxes.com>
> wrote:
> 
> > Similar to what one of the other posters suggested, I wonder if
> > there are Lisp students (whether from Ferrara or not) that are
> > reading this, and I wonder what they would think of it.
> 
> I am a computer science student at the university of Milano, Italy. I took
> my latest Lisp class last year. It was my third Scheme class (okay, I
> promise that I will join a Lisp Anonymous group to get out of this
> addiction :)

That's where I got addicted too.  Since it looks like I am much older
than you, you have no escape. :)

	...

> At the time of my latest Scheme class, our student lab was equipped with a
> couple of HP servers running HP-UX, accessible through about one hundred X
> terminals, and a dozen diskless PCs running WFW 3.x. All machines were
> connected to a LAN. STk was installed on the Unix systems, 3DScheme (a
> commercial educational environment by Schemers, Inc.) on the PCs.
> 
> Students were free to decide both the topic of the final programming
> project and which Scheme system to use for development. Most of them loved
> 3DScheme's and DrScheme's automatic indentation and sexp visualization
> facilities.
> 
> A group of students chose STk for the project. Their "editing cycle" was
> rather--how can I say?--"unconventional". They started coding under Unix
> with vi (not in Lisp mode) or nedit (if it provides facilities for Lisp
> indentation, they weren't used). When the thing became sufficiently messy,
> they:
> 
> - accessed the files from the Windows PCs via NFS
> - loaded them with 3DScheme
> - reformatted the code with 3DScheme's integrated editor
> - continued editing the freshly formatted files under Unix

Most of this story is amusing to me, since I know a couple of the
professor there and always told them to switch to CL.  On top of that,
the lack of Emacs culture at Milan is appalling :)

As usual the solution is to install Emacs everywhere and start working
with the real thing :)

Cheers

-- 
Marco Antoniotti ===========================================
PARADES, Via San Pantaleo 66, I-00186 Rome, ITALY
tel. +39 - 06 68 10 03 17, fax. +39 - 06 68 80 79 26
http://www.parades.rm.cnr.it/~marcoxa
From: Erik Naggum
Subject: Re: Indentation (please stop)
Date: 
Message-ID: <3139816769329365@naggum.no>
* Josef Eschgfaeller <···@felix.unife.it>
| Hey, this is becoming a sport.

  why am I not surprised that this is your line of defense?  sigh.

| Read the end of my first message ("with no intention of flame") - I'm not
| the world danger for the Lisp community.

  in this demonstration of paranoia, you keep defending yourself against
  charges that have never been levied against you, which I take to mean
  that you do not intend to listen, learn, or adapt your ways, but are
  still fully aware that they are wrong and do not serve the purposes you
  want them to serve.

| Anyway, I'm a little surprised, how important indendation seems to be.

  if it is so unimportant to you, why don't you just adapt?

  I'm still baffled by the amazing lack of introspection on your part.  why
  don't you understand how important indentation is to _yourself_ before
  you attack others for really stupid things they don't say, mean or intend?

| Young girls seem to be very able to close parentheses, as opposed to your
| young programmers.

  come again?  as opposed to _whom_?  I actually do teach Lisp at times,
  but now is the first time you have had opportunity to learn that fact.
  my "young programmers" are taught to understand structure by zooming in,
  not by scrutinizing details, because when a professional programmer reads
  code, he or she will want to understand big issues first, not minutiae of
  the coding.  stuff like control flow, data flow, intent, and abstraction,
  not the precise syntax of a DO form.

| Also, you missed the main point, when I wrote that beginners should
| memorizes the structures which appear.

  no, I downgraded your "main" point and upgraded your other points.

| This means carefully reading the code, creating by yourself mentally a
| sort of stack of dependencies which substitutes the indentation.

  this is a mistaken view.  the big, useful idea with high-level languages
  is to be able to localize effects so that the human brain can deal with
  units of useful size, and to respect the fact that the human brain does
  not have an unlimited stack with unlimited precision and does not have an
  unlimited number of mental units available.  if we had had that, we would
  have had very different languages.  and programming is already _way_ more
  difficult to grasp and hold in one's brain than regular languages.

| I'm a mathematician by origin and know very well how disturbing unusual
| notation can be.  ... So I'm trying to understand exactly what is going
| on in Lisp, because as a teacher I have to explain well also those
| things, which a programmer maybe deals only by experiment or experience.

  this tells me that you have never actually programmed, only taught.  when
  programming in real life, the most important issue is fast navigation,
  bar none.  professional programmers want to read code in large blocks,
  not look at every character.  that's how most people read, too: they
  don't look at each character, they scan multiple "word pictures" at a
  time, perhaps whole paragraphs to recognize key words.  the visual
  structure of a text, with paragraphs, heads, fonts, etc, is all there to
  make this scanning faster and more accurate.  you effectively argue that
  we should revert to �'s in the middle of the text, and neither should we
  use more visible display fonts for heads, because people will read a page
  of text from start to finish, anyway.

| These little details, which some of you are knowledgeable about, I not,
| are surely much more important than indentation.

  again, if indentation is so unimportant to you, why do you carp on it?

| And why do you think that I don't want to change my opinions?

  because you haven't, in a case where you should have if the rest of what
  you say is true and honest.

| I'm very quick in typewriting and can indent by myself.

  well, stuff like this helps me conclude you won't change your opinions.
  smart people keep looking at ways to improve their ways.  being
  _satisfied_ with a way of doing something only goes to show that you're
  set in your ways, and having a teacher like that is the worst that could
  happen to a group of students (apart from being shot, raped, poisoned,
  etc, which I'm sure you would have brought up if I didn't exclude it).

| More generally the point of view, that someone who doesn't follow blindly
| any uniformization lacks introspection, should be rather dangerous.

  ah, so you think this is about your not following "uniformization", and
  of course your have to make it into _blindly_ following, too!  geez.

| Indentation is not the problem, I can indent how you want, but I'm
| thinking about intolerance now.

  great, but maybe you should start examining your own intolerance first.
  maybe you should examine the _actual_ basis for your incredibly stupid
  charge of "blindly following uniformization".  you're hell-bent on being
  different for no good reason, and that has a high price.  deal with it.

| I learned everything I need of Emacs and have an .emacs file full of
| little utilities.  I don't need the special modes because I type so fast.

  people who think they have "learned everything they need" are wrong.

| How can you judge a person you don't know?

  because I judge and criticize your actions, not your person.

| Now you are critizing non-seasoned Paul Graham.

  silly appeals to authority don't work very well with me.  try again.

| Everything ready for the next European War.

  I'm really baffled why you want to start a war over this.  you're being
  criticized for a really stupid position, take it deeply personal, defend
  yourself against charge never levied at you, fill your rejoinder with 95%
  irrelevant crap, and you think others are at war with you?  are you nuts?

  but, yeah, you're right, there's nothing the world can ever teach you, so
  let's conclude this discussion now.

#:Erik
-- 
@1999-07-22T00:37:33Z -- pi billion seconds since the turn of the century
From: Fernando Mato Mira
Subject: Teaching Lisp (was: Indentation (please stop))
Date: 
Message-ID: <377B6742.6105B964@iname.com>
Josef Eschgfaeller wrote:

> I'm a mathematician by origin and know very well how disturbing

> Give me some time please. I find loop rather complicated and it is a

Learn SERIES. (Appendix in CLtL2) You'll like it.
Leave loops to the Pascal teachers  Show the _other_ ways
of doing things. And, more importantly, the evils of:

1. EVAL (instead of APPY)
2. Lists  (instead of structures/CLOS)
3. MAPCAR (instead of SERIES)
4. Macros (instead of (declare inline))

The worst thing is not when people is not exposed to Lisp, it's when they are
trivially introduced to it, so that then they try to blindly apply _one_ approach
to everything, which is wrong. Gee, I can write an AntiPattern paper now ;->

Regards,
From: Fernando Mato Mira
Subject: Re: Teaching Lisp (was: Indentation (please stop))
Date: 
Message-ID: <377B6956.CEFA270C@iname.com>
Fernando Mato Mira wrote:

> of doing things. And, more importantly, the evils of:

Gee. A couple I forgot:

5. LOOP (instead of SERIES)
6. SERIES (instead of LOOP)

;->

Isn't that cool? It means Lisp forces you to _think_ ..
From: Reini Urban
Subject: Re: Teaching Lisp (was: Indentation (please stop))
Date: 
Message-ID: <377f50b3.183713275@judy.x-ray.local>
Fernando Mato Mira <········@iname.com> wrote:
>Learn SERIES. (Appendix in CLtL2) You'll like it.
>Leave loops to the Pascal teachers. Show the _other_ ways
>of doing things. And, more importantly, the evils of:
>3. MAPCAR (instead of SERIES)

What would be the short anti-pattern of MAPCAR? 
(compared to the advantages of series, which i don't know that good)

I do see that mapping with lazy-evaluated lists has some serious
advantages over the simple mapping, but i wouldn't try to explain that
in a beginners course, only as far as SICP goes (lazy evaluation only),
but not into the complete SERIES package.

--                                         
Reini
From: Christopher Browne
Subject: Re: Indentation (please stop)
Date: 
Message-ID: <7leo40$3re9@george.sabre.com>
On Wed, 30 Jun 1999 19:57:39 +0200, Josef Eschgfaeller
<···@felix.unife.it> wrote: 
>I shall take much time this summer to learn Lisp well and thought to seek
>more useful advice from the list.

Good luck with this...

>I'll reply now to some points, but I was more interested in understanding
>here what I cannot find in the books, so perhaps one should conclude
>this indentation thread. For example there were also some mistakes
>in all that. Anyway, I'm a little surprised, how important indendation
>seems to be. I think there is much more in Lisp than indentation.

Indeed there is more than indentation.   

The point is that indentation is sufficiently easy to automate, and
improves readability sufficiently, that it makes little sense to *not*
automate this. 

>I'm a mathematician by origin and know very well how disturbing
>unusual notation can be. Writing X: f ---> f for a function instead
>of f: X ---> X is an innocent change, but makes already things
>uncomfortable. But if one knows exactly what one is speaking about,
>it becomes a minor difficulty. Notation in mathematics is very
>important, but understanding much more. So I'm trying to understand exactly
>what is going on in Lisp, because as a teacher I have to explain
>well also those things, which a programmer maybe deals only by experiment
>or experience. These little details, which some of you are
>knowledgeable about, I not, are surely much more important than
>indentation.

A *definitely* reasonable parallel is to look at Donald Knuth's efforts
in creating TeX.  

He spent considerable time and effort to build tools to render
mathematical material correctly. 

And contrary to your suggestion that indentation isn't important, in
TeX, the notion of "gluing" objects together is the concept of *vital*
importance.  One (good) view of TeX is as a system that allows the user
to construct a large and very complex dynamic programming formulation
where the point of the exercise is to optimize the layout based on a
host of constraints and objectives.  

In effect, this is the "indentation problem" taken to the nth degree. 

>>> For example: "A do has the following structure ... Therefore, when you
>>> see a do, look first at the assignments, then at the break-condition and
>>> the result, then at the single instructions."  And so on. In my opinion
>>> this is a good training, and after little time one has no more need to
>>> study the indentations, which also takes time and distracts.
>
>> this sounds like a struggling beginner's view, a beginner who struggles
>> because he's doing something wrong and don't want to change his ways.
>
>Here I cannot follow your reply. It's an important point. What is
>wrong with it? I'm a beginner - I studied Lisp two years ago, mainly
>in a good older German book by Mayer, which explains rather well the
>underlying data structures, but thought then it were too difficult
>for my classes, and changed opinion only this year, because it seemed
>easy for them. The students are beginners too. So I think it's o.k.
>that they learn how the building blocks in Lisp look.
>
>And why do you think that I don't want to change my opinions? When I
>learn something, I change my opinions very often, each time I discover
>some new aspect.

You suggest that a goal is for one to (rewording slightly) "not need to
work hard at handling indentation."

Everyone agrees with that; the point that is being put across is that
with an editor environment that is supportive of indentation, managing
indentation does not represent a burden either of intellectual effort or
of time. 

>>> in fundamental mode), I verify the balance of parentheses with the editor.
>> "always in fundamental mode"? there should be a law against that.
>
>Sorry, that's my private problem. I'm very quick in typewriting and
>can indent by myself. During the last 1-3 years I wrote much in Python,
>where indentation is obligatory - that's not the point.
>I'm maintaining a bibliography with over 3500 files and a rather big
>Web server, using only Emacs in fundamental mode, and it takes me very
>little time. I like Emacs because it's so powerful, but if one prescribes
>too much one looses some of that power.

If you switched to a Lisp-oriented mode, the editor could handle Lisp
indentation for you, thereby diminishing the number of things you need
to worry about by one. 

>> here's my suggestion: use PPRINT on your forms to see how Common Lisp is
>> most commonly formatted.
>
>Beautiful. I shall from now on indent my code in my questions, and if
>I should forget, you use print. I tried it, it works well.
>
>> (defun number-list (from to &optional (step 1))
>> (do ((element from (+ element step)) (list nil))
>> 	((> element to) (nreverse list))
>>   (push element list)))
>
>> I would expect a seasoned Lisp programmer not to write this as a function
>
>Now you are critizing non-seasoned Paul Graham.

What he presents in a textbook, for pedagogical purposes, may not
represent what should be used in large production systems.

It is useful to have students perform exercises that build functions for
things that one might, "programming in the large," instead represent in
another way. 

>> rather just write (loop for n from <from> to <to> collect n)
>
>Give me some time please. I find loop rather complicated and it is a
>long chapter in Steele. I shall read that later, because it is also
>interesting, but before there are many other points I want to master.
>I made some little experiments with loop, but systematically it's too
>much at the moment.

... And that represents nicely why Graham would present it as a
function. 

(loop ...) is not a Lisp form that is easy for novices to grasp.

a) If the point of the course is to teach about things like lists,
recursion, and presenting-program-as-data, (loop) is not of great
pedagogical value.

b) (loop) is hard to understand, and novices shouldn't try to learn it
first, as in that direction lies frustration.

c) The specifications for (loop) are arguably not completely consistent,
which means that experts may sometimes disagree as to how a particular
instance should function. 
-- 
Real Programmers use: "compress -d > a.out"
········@ntlug.org- <http://www.ntlug.org/~cbbrowne/lsf.html>