Re: jargon lisp1 vs lisp2
- From: "xahlee@xxxxxxxxx" <xahlee@xxxxxxxxx>
- Date: Mon, 13 Oct 2008 12:28:10 -0700 (PDT)
Xah wrote:
«
• Why You should Not Use The Jargon Lisp1 and Lisp2
http://xahlee.org/emacs/lisp1_vs_lisp2.html
I did suggest a alternative in my essay.
I would say Common Lisp's model or Scheme Lisp's model,
»
George Neuner wrote:
The terms "Lisp-1" and "Lisp-2" were invented to expressly *avoid*
mentioning Common Lisp or Scheme because using the names of the
languages invokes other differences not relevant to the discussion of
name spaces.
Yes. I mentioned in the article. The creation of these terms is in a
context of a political fight. Namely, in creating the Common Lisp
standard, as Kent Pitmant has tirelessly and repeatedly pointed out in
the past decade here.
As i mentioned in the article, the political context for the birth of
lisp1/lisp2 is over, about 2 decades ago.
Except when discussing history or the history of the naming of the
concept per se, there's no need to stick with the jargons lisp1 and
lisp2.
If fact, i argued, if not for so much of the colorful jargon “lisp1/
lisp2”, the issue wouldn't even be noticeable as it is relatively
unimportant. Common Lisp today has multi-meaning-space, and Scheme
Lisp is single-meaning-space. That's just a language fact and there's
not much one can do or want to do much about that.
Also, another point Kent has mentioned is that people in the community
naturally picked up these term. Actually, in my opinion, the
popularity and continued use of these terms has much to do with Kent's
promotion. In the past decade in comp.lang.lisp, he constantly remind
people of his article, and even explicitly request others to use the
term Lisp1 and Lisp2, as opposed to other terms people used when
discussing this issue, such as Lisp/Scheme's way.
or use a communicative term like multi-meaning-space and
single-meaning-space.
These terms are descriptive although they are a bit verbose compared
with Lisp-1, etc.
Yes of course. (but on the whole, all things considered, i think multi/
single-meaning-space is much better ... )
Lispers often call the associated concept name space. But in fact it's
not a naming space. Name space in computer langs is in general applied
to package names, and in general any particular scope of variables or
functions's names. In the case of lisp, lisp's symbols. What the lisp1
and lisp2 refers to, are rather peculiar to lisps, and it is more
proper to call them meaning-space.
Lisp does not use the term "name space" differently from other
languages. The meaning is the same, only the implementation details
are different.
Name space are the spaces for names. For example, you might have a
variable/subroutine/function/class named “CreateSound”, but this could
be just defined in your file, or it could be imported from a package/
module/library, or another package/module/library could also have such
a entity called “CreateSound”. This is when the name space concept
came from. For those curious, the “space” part of the terminology came
from mathematics, e.g. vector space, topological space. It effectively
means a “set”. The reason that “space” and “set” are often synonymous
is due to the study of geometry.
The name space concept is tightly connected with the language's
library/package/module system. In emacs lisp, and PHP, for example,
the language actually do not have a name space mechanism, so that you
have more or less create unique names for every function/var you
write. (latest version of PHP introduced name space mechanism but
isn't in common use yet) In most other langs (e.g. Perl, Python,
Mathematica), there are name space mechanisms, so that you could call
a function in some library using some kinda fullpath system, or that
you could call that function without fullpath by “importing” the
function's name into your current file's name space. However, this
still does not solve the problem of uniq naming. That is, a Joe could
write a library named Sound with a function named CreateSound, but
someone else could also have writen a lirabray named Sound with a
function named CreateSound. So, when 2 program both uses CreateSound,
they might behave very differently. (this is a problem for example in
emacs, where lots of people has written a module named xyz-mode (e.g.
Javascript-mode), competing for the same name xyz-mode, or else using
creative and less intuitive names to avoid name space jamming (e.g.
javascript-mode vs js-mode vs js2-mode, xml mode vs nxml mode, perl
mode vs cperl mode, ... etc.))
Java solved the uniqueness problem by adopting a domain name system
for library names, as a convention. So, if joe writes a package, by
convention he should name his package something like “com.joe-
bloke.sound”. This domain name system has been adapted in few other
language systems too.
With regards to lisp, in emacs lisp for example, the name space is a
major problem, and is also a major problem of Scheme Lisp (Scheme Lisp
spec 6 tried to fix htis problem but not without huge controversies).
And as far as i understand from hearsay of gossips here, it is also a
major problem for Common Lisp.
The above is a brief introduction on the concept of name space as it
is used, and some of its issues.
Now, the jargon lisp1 and lisp2 refers to a concept entirely different
from name space. It has to do with what lisp calls a symbol's
“function cell” or “value cell” (note: as is given by Kent's article
title “Technical Issues of Separation in Function Cells and Value
Cells”). What these function cell and value cell basically means the
value of lisp language's var/function/subroutine/class. (Note: var/
function/subroutine/class are typically called a “name” in computer
languages but in lisp is called “symbol”.) The “function cell” or
“value cell” is effectively “meaning space” or “value space”.
Xah
∑ http://xahlee.org/
☄
.
- Follow-Ups:
- Re: jargon lisp1 vs lisp2
- From: George Neuner
- Re: jargon lisp1 vs lisp2
- From: Cor Gest
- Re: jargon lisp1 vs lisp2
- References:
- jargon lisp1 vs lisp2
- From: xahlee@xxxxxxxxx
- Re: jargon lisp1 vs lisp2
- From: George Neuner
- jargon lisp1 vs lisp2
- Prev by Date: Re: reading large fixed-width datasets
- Next by Date: Re: reading large fixed-width datasets
- Previous by thread: Re: jargon lisp1 vs lisp2
- Next by thread: Re: jargon lisp1 vs lisp2
- Index(es):
Relevant Pages
|