#lispyGopherClimate Tuesday-night-in-the-Americas

https://toobnix.org/w/88ZPfUcso2HNSKX6gNYShW #archive <- should have full audio

- This brave new world's #AI #vulns
+ #climateCrisis with e.g. oil

- The #commonLisp #conditionSystem #programming thread (& #shell ) https://gamerplus.org/@screwlisp/116390562771940285
Featuing @kentpitman @dougmerritt @vnikolov and more

- Also a note from @JohnMashey #unix when I tagged him (mostly, "haven't touched #lisp since the 70s").

- Live chat on #lambdaMOO !

@sdf can someone validate @artemis .

@screwlisp wrote:
«Some more condition history:
https://www.nhplace.com/kent/CL/Revision-18.txt
[Vassil's note: I should have inserted a newline here from the beginning].»

Thank you!
A Primary Source.
Beautiful.

Also note the top of the file and that Emacs `lisp-mode' works even with a buffer mostly full of non-lisp content.

@kentpitman @dougmerritt @JohnMashey @mdhughes @nosrednayduj

Two finds from
<https://www.nhplace.com/kent/CL/Revision-18.txt>:

(1) The following two paragraphs speak for themselves:

«Moon writes:
``I'm still bothered by the fact that there is no way for a handler,
handling a given condition, to know when it invokes a restart that
that restart was established to recover from that particular condition.
This is simply the general problem of dynamic scoping in Lisp. I think
this issue only arises when a condition is signalled while executing
a handler. I have been unable to think of any reasonable way out of
this, but it is certainly a weakness in the proposal.''

KMP concurs heartily, and has heard noises to the same effect from
others who've been reading this document closely. It is not clear
whether this criticism means that this proposal is missing the mark
someplace or if it means that we need to simply layer on some new
thing to address this issue. Nevertheless, this problem is an important
one and the answers are not obvious. [Suggestions solicited.]»

(2) The modification history lists

C.CS.CMU.EDU: PRVA:<SLISP.STANDARD>ERROR-PROP-8.TXT

This must be a coincidence, but PRVA is (very close to) the South Slavic word(s) for FIRST.
(The feminine form.
I know too little Croatian, Serbian, or Slovenian to say whether they have a word for "device" of the feminine gender.
Bulgarian doesn't, though the words for "machine", "memory", and "periphery" are all feminine.)

@screwlisp @kentpitman @dougmerritt @JohnMashey @mdhughes @nosrednayduj

@vnikolov
From what I understand, the Moon is remarking on what would become

(defun handler (c)
(let ((r (find-restart 'my-great-restart c)))
(if r (invoke-restart r))))

i.e. finding the restart on a certain condition (you might have several conditions).
@kentpitman @dougmerritt @JohnMashey @mdhughes @nosrednayduj

@screwlisp

Yes, you are right, and the writeup about issue CONDITION-RESTARTS makes that clear.
(See the Common Lisp HyperSpec.)
What impressed me was that Moon spotted this:
either from experience, which would include nontrivial programming,
or with foresight, which is even more difficult.

@kentpitman @dougmerritt @JohnMashey @mdhughes @nosrednayduj

@vnikolov

vn> What impressed me was that Moon spotted
vn> this: either from experience, which
vn> would include nontrivial programming,
vn> or with foresight, which is even more difficult.

Well, remember the Lisp Machine had been using the Zetalisp 'New Error System' (NES) for a few years, and it was routine for it to offer a lot of what were called 'proceed options', the equivalent of restarts. It was not very uncommon to end up in the debugger with an error and then get an error while debugging that so find yourself in a second-level debugger seeing proceed options that belonged to different conditions. So sometimes you would ask yourself 'is this proceed option something it's offering to fix in the first error or the second one'?

This was made perhaps a little easier to see in the source code in the NES in a way that was similar to how RESTART-CASE was set up and would associate the proceed options with an error being signaled, so you might visually ask yourself 'how will the person who is handling this realize that this is the place to go?'

So Moon's concern was him being thorough, but in the community of people who used these things heavily in NES (and there were such people) it really was a situation that had already come up.

Here's a link to issue CONDITION-RESTARTS, by the way, which you referenced but did not link:

https://www.lispworks.com/documentation/HyperSpec/Issues/iss075_w.htm

cc @screwlisp @dougmerritt @JohnMashey @nosrednayduj

CLHS: Issue CONDITION-RESTARTS Writeup

@kentpitman @vnikolov
And more superficially, Moon *was* both brilliant and experienced. And I think insightful and other qualities, but I didn't know him personally.

I believe that Kent takes such qualities and therefore such people for granted, but it's worth remembering that they are rare against the background noise.

Edit: I removed John Mashey from the CC list, and recommend others do, too. Possibly it was worth chancing that he might be interested, but I think his lack of responses speaks volumes.

@screwlisp @nosrednayduj

@dougmerritt

I am quite sure you are right about Moon, and I definitely support your point that the presence of such people is not to be taken for granted.

Regarding your remembering to take care of the list of recipients, it made me think again that posting to a group as a collective entity has its advantages.
Yes, I know that the latter on its turn may lead to cross-posting trouble.

@kentpitman @screwlisp @nosrednayduj

@vnikolov @dougmerritt @screwlisp @nosrednayduj

I feel like I've written this before, so apologies if there's some duplication. I guess there's a lot of things I say more than once. But someone once taught me that when people repeat themselves, instead of complaining, you should just hear them as saying it's important. (I'm probably repeating that, too, but hey .. it's important)

I don't take Moon's insights for granted, but the MIT AI lab was full of gifted people. Dave Moon, Tom Knight, Mike McMahon, Richard Greenblatt, Bernie Greenberg, Dan Weinreb, Howard Cannon, Guy Steele, JonL White, Bob Kerns, Jeff Golden, Ellen Lewis, Richard Bryan, Earl Killian, Gene Cicarelli, Richard Stallman, Danny Hillis, Alan Bawden, Glenn Burke, Henry Lieberman, George Carrette, Jonathan Rees, ... and of course Ron Rivest, Vaughan Pratt, Chuck Rich, Richard Waters, Gerry Sussman, Hal Abelson, Carl Hewitt, Pat Winston, Pete Szolovitz, Bill Martin, Marvin Minsky.

I'm probably leaving many out, as these are just those that spring quickly to mind. But these people were the fabric of the AI Lab and the Lab for Computer Science at Tech Square, where my office was. I knew some of them better than others. Some just as passing acquaintances or people who gave talks or taught courses, but many of them well enough to say hi to or chat about things. Some I interacted with more. Some got cc'd into email and I came to know them through bug reports or fixes.

I write this message is in context of an assertion that I should pay attention to the specialness of one person. And I don't mean to name drop, though it surely must sound like that, but just to paint a scene of how dense that place was with fascinating and talented people.

There were open araas where people collected, some referred to as playrooms, where people had interesting exchanges. But they were the "ordinary" people of that community, not because they were any of them ordinary, each was special, but because with people like that around, the kinds of conversations one has as ordinary chitchat or routine matters of concern is different than with people you might meet on the street.

You could walk up to anyone and ralk to them about anything. Moshly no one stood on credentials or used titles. Often login names, which might be first names or initials. What mattered was to be interesting and so it was a soup of perpetual insight and interestingness.

It was the colocation of such people, as much as any individual, that caused things They were each contributing, of course but also driving each other to solve hard problems and make each other laugh. The funnies for the Sunday Morning Edition of the pitmanual show examples. https://maclisp.info/pitmanual/funnies.html
Pay attention to the headers, not just the message content. But also the complexity of the discourse

So yes, back to the context of this message thread, it might seem deep, the idea of two levels of recursion in errors, but that was routine discussion in a community like that, people who thrived on complexity.

I was privileged to be there at all. A great deal of dumb luck. And yet if one stood always in awe and didn't just dive in and be part of it as ordinary practice, one missed the real opportunity to live it.

As for the luck part, for anyone on LinkedIn, I recently wrote some rants about that in conversation on this post.

https://www.linkedin.com/posts/giantsandbox_when-people-say-if-you-dont-like-your-activity-7448761105188933633-LPce
(My first comment is in response to a comment by Joseph Kim.)

TL;DR I think it's the responsibility of those privileged with such luck to make sure others less fortunate aren't left behind. To the extent that we succeeded, it was out of a sense of community and for the purpose of community. No one can do everything on their own, nor should they have to.

The Pitmanual: The Pitmanual: Funnies

@kentpitman
> I don't take Moon's insights for granted, but the MIT AI lab was full of gifted people...paint a scene of how dense that place was with fascinating and talented people...

You misunderstand me, because that was precisely my point. You are brilliant, and have a history of being in the company of, and collaborating with, other brilliant people.

Yours was a great post though, I don't mean that it was off target.

P.S. LinkedIn...
> my late Norwegian friend Erik Naggum

You are an impressively patient and even-tempered person.

I saw some Usenet posts by him with those qualities. I think.

@vnikolov @screwlisp @nosrednayduj

@kentpitman
> 𝔓𝔦𝔱𝔪𝔞𝔫𝔲𝔞𝔩

Damn Fraktur for making capital P look like capital B.

> I didn't write the original ELIZA program, although my Lisp class was taught by Joseph Weizenbaum, who did. I later wrote a very elaborate program of similar kind, which I just called DOCTOR, in order to play with some of the ideas.

I didn't remember you were the author of M-X doctor -- that means *you* are to blame, er, I mean, get the credit, for modern LLMs, which are obviously just a half step forward from that!

> I understand from Wikipedia's PARRY entry that Weizenbaum's ELIZA and PARRY were connected at one point, although I never saw that.

That's my memory of what the PARRY book says, but I don't have it at hand to check.

> This is mostly interesting just to document that the still-running debate about the naming of car and cdr goes quite a ways back.

I can't find anything about earliest suggestions / discussions, but wasn't it Interlisp that first implemented "first" and "rest"?

@vnikolov @screwlisp @nosrednayduj

@dougmerritt @vnikolov @screwlisp @nosrednayduj

No, mine is not the m-X Doctor from Emacs (I don't think). Mine was a standalone one that ran as :DOCTOR on the MIT ITS machine named MC.

There were other cases where Parry and some Doctor program met, probably either Weizenbaum's specifically or others of note.

I can't speak to Interlisp ultimately having FIRST and REST, but in my 1978 Interlisp manual, FIRST has four meanings in the index at the back of the manual, and none are to a function. And there is no index entry for REST.

The uses of FIRST are as an argument to advise, as a clisp iterative statement, as a DECLARE option and as a token that denotes a particular kind of read-macro.

I know there was discussion of using LHS and RHS because LLRHS made some amount of sense so the composed operators had natural rewrites. I think there was some subtle reason why we discarded that.

If it came up in t he design of T (Yale Scheme), where we reconsidered almost every detail of old design, we may have discarded it on pronounceability. CADR may be hard to pronounce, but LRRHS would be even harder. :) Also, for that, we liked the pun of CHAR and CHDR for strings, since CHAR would get the first char of the string. Somewhere I think I still have all the design documents that came up for our every-Tuesday meeting the summer I was at Yale working with Jonathan on the initial design, and it we were utterly irreverent to nearly every bit of Lisp history, asking whether we should keep it or redo it. A lot of things we kept still went under the chopping block for a while. :)

@kentpitman wrote:
«CADR may be hard to pronounce, but LRRHS would be even harder. :)»

I would pronounce LRHS as lar-his and LRRHS as lerr-his.
LLRHS is difficult, though.
Maybe allar-his.

But then I think SBCL ought to be pronounced ess-buckle (I know it isn't).

@dougmerritt @screwlisp @nosrednayduj

@screwlisp

Ah, pronounced like the thing one does when one plugs one's ears and makes noise like they don't want to hear what someone else is saying.... ;)

cc @vnikolov @dougmerritt @nosrednayduj

@kentpitman
It also reminds me of the sound of the original Loglan (not so much Lojban)

@screwlisp @vnikolov @nosrednayduj

@screwlisp wrote:
«la ra ra ha sa»

And that makes me think of a musician singing it as:
A D D B-flat B
(La Re Re h Si),
not much of a tune...

@kentpitman @dougmerritt @nosrednayduj

@kentpitman wrote:
«The funnies for the Sunday Morning Edition of the pitmanual show examples. <https://maclisp.info/pitmanual/funnies.html

Thank you.
The forms under Evaluating New Ideas look like quines to me, but I'll examine them properly in the light of day.

@dougmerritt @screwlisp @nosrednayduj,

The Pitmanual: The Pitmanual: Funnies

@vnikolov @dougmerritt @screwlisp @nosrednayduj

Yes. Of course we had not actually had the so-called older code in play. But when we saw the let, it seemed to imply that there would have to be a more cumbersome quine and it took us a little while to write it. :) The interesting irony being that the backquoted LET form was not only more compact but also easier to see that it could be written at all.

Incidentally, I think the shortest quine you can write in maclisp, or at least in common lisp, though a bit of a cheat if you try to embed it in code, is just the symbol minus sign by itself at toplevel. :)

[1]> -
-
[2]>

Never mind cheating, I claim that atoms are not eligible for quines.
Otherwise, include T and the single-digit numbers.

@kentpitman @dougmerritt @screwlisp @nosrednayduj

On the tangential topic of quines.

Here is my "due diligence".
By the way, in October I realized on my own a quine could be done with
`lambda' and `let', tried to work it out, ran out of time, left it
aside, and, alas, never went back to it...

(defun quinep (form)
"Test whether a non-atom FORM evaluates to itself.
Test equality with `equalp' for better coverage (of implementations
that construct structures when reading backquoted expressions)."
;; A justified use of `eval'.
(and (not (atom form))
(equalp form (eval form))))

;; NB: `*print-pretty*' may affect the printing of backquotes.

(defconstant pitmanual-funnies-eni-mmcm
'(LET ((LET '`(LET ((LET ',LET)) ,LET)))
`(LET ((LET ',LET)) ,LET))
"MMcM's quine.
See <https://maclisp.info/pitmanual/funnies.html#evaluating_new_ideas>,
«MMcM@MIT-AI 09/17/79 15:37:16 Re: ''s».")

(defconstant pitmanual-funnies-eni-rwk-kmp
'((LAMBDA (LAMBDA) (LIST (LIST 'LAMBDA '(LAMBDA) LAMBDA)
(LIST 'QUOTE LAMBDA)))
'(LIST (LIST 'LAMBDA '(LAMBDA) LAMBDA)
(LIST 'QUOTE LAMBDA)))
"RWK-KMP's quine.
See <https://maclisp.info/pitmanual/funnies.html#evaluating_new_ideas>,
«KMP,RWK@MIT-ML (Sent by KMP@MIT-ML) 09/18/79 03:37:32».")

(assert (quinep pitmanual-funnies-eni-mmcm))
(assert (quinep pitmanual-funnies-eni-rwk-kmp))

#CommonLisp
#ForKicks
#Pitmanual
#PitmanualFunnies
#Quine

@kentpitman @dougmerritt @screwlisp @nosrednayduj

The Pitmanual: The Pitmanual: Funnies