Subject: Re: Access the the second return value?
From: Erik Naggum <erik@naggum.net>
Date: 2000/07/01
Newsgroups: comp.lang.lisp
Message-ID: <3171439197402294@naggum.net>

* "Larry Elmore" <ljelmore@prodigy.net>
| I don't see this, unless you are using the IBM mainframe on which
| Lisp was first developed -- and even then, the abbreviations for
| 'Contents of Address Register' and 'Contents of Data Register'
| aren't very meaningful...

  AFAIK, they were the instructions used to extract halves of a kind
  of pointer, and it consisted of an address part and a decrement part
  (not data).  A stack that knew its size was easily implemented with
  this scheme, and it was done just that way on the PDP-10 I grew up
  on (for all practical purposes) -- both stack and more specialized
  instructions would add 1 to both halves of the machine word and you
  could test for overflow at this point if the _negative_ size would
  overflow into zero.  If you read the Lisp 1.5 Programmer's Reference
  Manual carefully, you'll much intermingled discussions of the
  special treatment of negative pointer values -- the sized pointer
  concept was clearly _abused_ by the Lisp implementation on that IBM
  processor!  I found this quite amusing when I read it.

  (Argh, this remind me that I pushed a request for an explanation of
  the power of the PDP-10 macro assembler on my internal stack, and it
  _doesn't_ signal overflow.  Sigh.)

| I've always thought 'head' and 'tail' would've made a lot more sense
| even 40+ years ago, and possibly 'htail', 'httail', etc. as
| extensions. For some things, though, like getting the nth element of
| a list, other words are a _lot_ clearer, though I name them
| 'first-of', 'third-of', etc.

  Hm?  I already pronounce (first foo) as "first of foo".

#:Erik
-- 
  If this is not what you expected, please alter your expectations.