Subject: Re: Parentheses Hierarchy
From: Erik Naggum <erik@naggum.no>
Date: 1999/07/24
Newsgroups: comp.lang.lisp
Message-ID: <3141819444951656@naggum.no>

* joe comunale <jbcqc@qcunix.qc.edu>
| Hi, I am an admirer of LISP... I only wish I knew it better. That being
| said, I would like (and dare) to suggest an improvement - introducing an
| idea we use in Physics.

  physics is a field very heavily optimized for those who understand it, or
  to put it another way: it is not a field well known to treat beginners
  nicely and many people are unable to grasp physics for a multitude of
  reasons.  you are therefore importing a trait from a beginner-hostile
  world to another world that is not nice to you as a beginner simply
  because you are _not_ a beginner in the former and are a beginner in the
  latter.  this is a ridiculously naïve approach to solving problems.

| I submit a sample comparison test below:
| 
| (cond ( ( = 0 (mod n i) ) ( + i sum ) ) )

  Lisp programmers write (cond ((= 0 (mod n i)) (+ i sum))) and don't have
  a problem with it, but if they do, they break it into two or three lines,
  as several people have shown.  moreover, modern-day programmers appear to
  think color is the answer to all problems, so those who think this is
  worth doing would colorize the condition differently from the consequent.

  since you can add color without affecting the syntax, I would suggest you
  investigate that option as a beginner rather than suggest changes that
  could only affect future code, unless you were willing to make changes to
  the way you view code.  however, once you start down the road of making
  modifications to how you view code, there's nothing to stop you from
  making your proposed syntax change locally so that you see more diverse
  parens, but the file contains normal parens.

  I view it as a serious short-coming of programming textbooks that they
  don't deal with issues of representation and presentation.  it's integral
  to Lisp whose lists have a linked list representation and a parenthesized
  presentation, whose integers are sometimes made up of "bigits" but still
  print like normal integers, and myriad other useful layerings of abstract
  idea, machine representation, and presentation forms to the human.  take
  this Y2K silliness, which should be regarded as a monumental flaw in the
  way people are taught how to deal with dates and time.

| My point is to set this up in the "kernel" and enable everyone,
| especially struggling students (like myself), to easily read LISP.

  noble goal, but your suggestion is missing the boat -- students exposed
  to your redesign would be at loss if you weren't also going to re-publish
  all textbooks using your new system.  I suggest you use colors as your
  first approximation to ease readability, and if you can't do that, use a
  paren matching mode that highlights the form the cursor/mouse is over,
  and then resort to syntactic rewrites in the display to the user.  and if
  you aren't using Emacs, now is a good time to start.  programming it is
  even done in a sort of Lisp.  (don't pick up too many habits, though.)

#:Erik
-- 
  suppose we blasted all politicians into space.
  would the SETI project find even one of them?