The Importance of Terminology's Quality

John Thingstad jpthing at online.no
Thu May 8 04:05:36 EDT 2008


På Thu, 08 May 2008 04:14:35 +0200, skrev Kyle McGivney  
<KyleMcG at gmail.com>:

>> • Module, Block, in Mathematica is in lisp's various “let*”. The
>> lisp's keywords “let”, is based on the English word “let”. That word
>> is one of the English word with multitudes of meanings. If you look up
>> its definition in a dictionary, you'll see that it means many
>> disparate things. One of them, as in “let's go”, has the meaning of
>> “permit; to cause to; allow”. This meaning is rather vague from a
>> mathematical sense. Mathematica's choice of Module, Block, is based on
>> the idea that it builds a self-contained segment of code. (however,
>> the choice of Block as keyword here isn't perfect, since the word also
>> has meanings like “obstruct; jam”)
>
> If the purpose of let is to introduce one or more variable bindings,
> then I don't see how changing to block or module would improve
> anything. I've always found it fairly intuitive to parse (let ((x
> 5)) ...) to "let x be five". Additionally, replacing let with the
> synonyms you provided would approximately yield "permit x to be five"
> or "allow x to be five". In my mind you have constructed an argument
> in favor of let here (obviously it's better than block, because
> nobody's going to come along and be confused about whether let will
> "obstruct" or "jam" them :)

How about bind?
  (bind ((v f (mod i)) ((a b) list) (t (rem q)))

1. is a multiple-value-bind
2. is a destructuring-bind
3. is a let

http://common-lisp.net/project/metabang-bind/

To me this is a example of where the ANSI group could have spent more time  
on naming.

--------------
John Thingstad



More information about the Python-list mailing list