Subject: Re: representing a network in lisp
From: Erik Naggum <erik@naggum.net>
Date: Tue, 09 Apr 2002 18:46:04 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3227366781687343@naggum.net>

* Jochen Schmidt <jsc@dataheaven.de>
| I strongly advise against setting variables like *print-circle* to
| another value.

  Are you for real?  This problem concerns the inability of an evaluated
  form in the Emacs-Lisp Interface to return a circular structure.  If
  anything, the binding of *print-circle* should be forced to true, to
  prevent this problem.

| You can easily mess up your environment by doing such things.

  What nonsense!  If you make these kinds of changes, it is because you
  want to, and if your environment cannot survive changing them, it is such
  a pile of crap that you are much better off without it.

| This is why many environments hold their own bindings while evaluating
| the buffer. This means that the *print-circle* of two different
| buffer-evaluations are two different bindings.  If you want to set
| *print-circle* to T you should do it locally by doing something like the
| following:
| 
| (defun foo ()
|  (let ((*print-circle* t))
|    (bar)))
| 
| Since *print-circle* is a special variable it will be visible in the 
| dynamic extent of BAR.

  And this relates to printing return value how?  Please _think_!

| The fact that you could not set *print-circle* to T globally is not a
| language issue but an IDE issue. It is actually a safety feature of ACL
| and a strong sign that you do something wrong.

  Riiiight.  Having your Emacs and Lisp session die on you because you
  return a prefectly valid structure _and_ you asked for *print-circle* to
  be true is a hint you are doing something wrong.  Gimme a fucking break!

  Sheesh, some people.

///
-- 
  In a fight against something, the fight has value, victory has none.
  In a fight for something, the fight is a loss, victory merely relief.

  Post with compassion: http://home.chello.no/~xyzzy/kitten.jpg