Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
quest for pass-by-reference semantics in CL
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  Messages 126 - 150 of 252 - Collapse all  -  Translate all to Translated (View all originals) < Older  Newer >
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Matthias Blume  
View profile  
 More options May 3 2002, 2:54 pm
Newsgroups: comp.lang.lisp
From: Matthias Blume <matth...@shimizu-blume.com>
Date: 03 May 2002 14:38:41 -0400
Local: Fri, May 3 2002 2:38 pm
Subject: Re: quest for pass-by-reference semantics in CL
Kent M Pitman <pit...@world.std.com> writes:

> As I understand it, what Matthias Blume is saying is that all objects in
> Lisp are, effectively, pointers.  And so the pointer is being copied.

I would prefer to say: "most lisp values have reference semantics",
and I would prefer to talk about abstract "locations" instead of
"pointers" (which people (incorrectly) associate with all kinds of
concrete things that do not apply here).

> At the surface level, it is pointless and a distraction to teach it this
> way.  All objects in Lisp are pointers, yes, but saying so causes people
> who know about pointers to expect a certain set of things to be available;
> for example, they expect addition on a pointer to mean something different
> than it does. They are confused that x+1 does not add one to the pointer
> x getting a pointer to the next thing;

Nonsense.  There are many languages where there is no addition on
pointers and yet they have pointers.  Mentioning the word "pointer"
does not (or: should not) imply "C pointer".

> C has no equivalent function,
> _certainly_ not as an infix operator, that dereferences a pointer, adds
> 1, mallocs a new result, and yields a pointer result.

That is completely besides the point.  Such a function could easily be
defined.

> I don't agree with teaching a language by appeal to datatypes that are
> below the level of abstraction that the language was created to indulge.

Right.  I would not want to appeal to specific data representations
either.  Notice that initially I quite carefully avoided the term
"pointer" and talked about abstract things like "locations".

> If I wanted to program in C concepts (an assembly language layer with
> respect to Lisp), I would be programming in C.  I am in Lisp for a
> reason, and I will use terms appropriate to Lisp.

As you should.  Just make sure that you use terms that actually
describe accurately what's going on in Lisp, but don't coin new terms
for things for which there are perfectly good language-independent
terms available.  "Call-by-value" is an example for such a term.

--
-Matthias


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Kent M Pitman  
View profile  
 More options May 3 2002, 3:01 pm
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: Fri, 3 May 2002 18:59:44 GMT
Local: Fri, May 3 2002 2:59 pm
Subject: Re: quest for pass-by-reference semantics in CL
ozan s yigit <o...@blue.cs.yorku.ca> writes:

> Kent M Pitman <pit...@world.std.com> writes:

> > ... we're a very old language community that pre-dates those
> > things which are asserting a right to dictate terminology...

> but there is a shared terminology in use for a long time, is there
> not?  what happened to mccarthy's or allen's or stoy's terminology?
> not good enough anymore?

I have learned that if the word 'politics' doesn't enter discussions
like this, you're either speaking some form of Orwellian newspeak that
hides the word, or else you're not seeing the whole game.

I seriously doubt that questions like 'what happened to' will be
yielded with answers like 'a technical problem arose'.  Usually the
answer will be 'a terminological battle arose' and a particular person
or their book or their course won.  The mistake is to assume, as newly
elected Presidents of the US often do, that the mere fact of election
to office construes mandate or even approval of all of one's detailed
agenda; it just means that the entire package, taken as a whole, was
better than another entire package.  And so, too, when communities
elect a certain book that teaches new terminology, they are often not
buying into every detail of that terminology per se, they are simply
saying that the overall value of the book is such that going for it is
better than not...

And even now, the ironic thing is that Matthias is basically arguing
against my terminology not on the basis of "is this a correct and
sufficient formalism?" but rather on the basis of "does this fit in
with other formalisms already in use politically in some other forum?"
... it's fine for him to do this, but in so doing he makes a de facto
acknowledgment that it's political flow, not internal conversational
coherence and correctness, that is delivering a particular outcome.

And so while there are a few people in this discussion with an
outright confusion about how things work, I think mostly we're all
just battling over what "feels better".  And I think that's silly,
since it's a known thing that different things feel better to
different people.  And if you acknowledge that, then the question of
what the right thing is really comes down to a an issue of statistics.
And I don't see anyone make quantitative statistical arguments.

- - - -

Incidentally, I disagree with the point that Erik made that this is
all CS101.  (I don't know if he really would disagree with my
disagreement though. :-) I think the underlying issue here is that
some of us might WISH that all people had learned this in CS101, but
that there is no such course and really a LOT of people come to the
table absent these terms and concepts, certainly absent them with
sufficient rigor of capability to be able to manipulate them.  Geez,
what 101 course leaves much of anyone competent; if they were
competent, we'd graduate them and send them out to the field to do
work.  101 courses preview concepts and raise basic awareness.  And
basic awareness is not enough to grasp the subtlety of this
discussion; if it were, this discussion would not still be running
after this many messages.  We'd all just be saying "oh, of
course. obviously" and stopping in wild agreement.  The fact is that
people come to languages with very different backgrounds, and Lisp at
least seeks to be a language of the common man, not just of CS
elitists--at least, _I_ want that of it.  And so I will not put CS
formalist terminology in between a potential Lisp convert and their
success.  The Scheme community seems to not mind doing this, and this
is one of many ways I generally prefer myself associated with this
political party rather than that one...


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Kent M Pitman  
View profile  
 More options May 3 2002, 3:07 pm
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: Fri, 3 May 2002 19:06:27 GMT
Local: Fri, May 3 2002 3:06 pm
Subject: Re: quest for pass-by-reference semantics in CL

Matthias Blume <matth...@shimizu-blume.com> writes:
> >  You are severely hampered by your higher education.

> You are getting severely rude.

Matthias, I think he didn't say this point to be rude.  He said this
as a way of making an auxiliary point, which seemed a point of some
substance that needs to be said.

Coby didn't say you were uneducated; just the opposite.  His statement
does not appear to be about _you_, it's about the subjective goodness
of the situation in which you find or place yourself.

It is a legitimate and interesting point of contention whether
'formalism' is serving people or confining them, and Coby was (perhaps
in an impolitic fashion) trying to touch on this.  It's very difficult
to enter into a discussion about this without risk of confusion,
but it's an interesting area to discuss if we can all retain a bit of
detachment here and keep to the issues, perhaps even cutting some people
some slack for the fact that English (or any human language) is tough to
phrase things in such that all such confusions will be reliably avoided.

You yourself have said some things to me in this thread that struck me
as rude.  However, I have not called you on it because I don't think
your purpose was to be rude.  (I guess you're welcome to correct me on
this if you intended to insult me and are annoyed you failed. :-)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Thomas Bushnell, BSG  
View profile  
 More options May 3 2002, 3:35 pm
Newsgroups: comp.lang.lisp
From: tb+use...@becket.net (Thomas Bushnell, BSG)
Date: 03 May 2002 12:26:10 -0700
Local: Fri, May 3 2002 3:26 pm
Subject: Re: quest for pass-by-reference semantics in CL

k...@ma.ccom (Takehiko Abe) writes:
> Harbison & Steele states "C provides only call-by-value parameter
> passing. This means that the value of the actual parameters are
> conceptually copied into a storage area local to the called function."
> <Sec 9.5>. This behavior is different from that of Common Lisp.

It's *identical* to Common Lisp.  In Common Lisp, the "value" of the
"parameter" is a *reference*, and that *reference* is indeed copied
into a local storage area.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Thomas Bushnell, BSG  
View profile  
 More options May 3 2002, 3:35 pm
Newsgroups: comp.lang.lisp
From: tb+use...@becket.net (Thomas Bushnell, BSG)
Date: 03 May 2002 12:27:36 -0700
Local: Fri, May 3 2002 3:27 pm
Subject: Re: quest for pass-by-reference semantics in CL
Kent M Pitman <pit...@world.std.com> writes:

> At the surface level, it is pointless and a distraction to teach it this
> way.  

Certainly.  But a completel understanding of programming languages
usually requires something more than just the surface level.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Matthias Blume  
View profile  
 More options May 3 2002, 3:42 pm
Newsgroups: comp.lang.lisp
From: Matthias Blume <matth...@shimizu-blume.com>
Date: 03 May 2002 15:27:32 -0400
Local: Fri, May 3 2002 3:27 pm
Subject: Re: quest for pass-by-reference semantics in CL

Nils Goesche <n...@cartan.de> writes:
> because not only are people not familiar with those terms, the
> theory is also not (yet?) capable of fully describing the
> semantics of Lisp or C, anyway, as you well know (EVAL, anyone?).

I don't think EVAL is that big of a problem.

--
-Matthias


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Matthias Blume  
View profile  
 More options May 3 2002, 3:52 pm
Newsgroups: comp.lang.lisp
From: Matthias Blume <matth...@shimizu-blume.com>
Date: 03 May 2002 15:48:59 -0400
Local: Fri, May 3 2002 3:48 pm
Subject: Re: quest for pass-by-reference semantics in CL
Kent M Pitman <pit...@world.std.com> writes:

> Coby didn't say you were uneducated; just the opposite.  His statement
> does not appear to be about _you_, it's about the subjective goodness
> of the situation in which you find or place yourself.

I know what he wrote.  He basically harped on the old "ivory tower"
thing, with more than just an innuendo that I might have lost touch
with reality because of whatever education I might have.  I find that
rude.

> It is a legitimate and interesting point of contention whether
> 'formalism' is serving people or confining them, and Coby was (perhaps
> in an impolitic fashion) trying to touch on this.  It's very difficult
> to enter into a discussion about this without risk of confusion,
> but it's an interesting area to discuss if we can all retain a bit of
> detachment here and keep to the issues, perhaps even cutting some people
> some slack for the fact that English (or any human language) is tough to
> phrase things in such that all such confusions will be reliably avoided.

Right.  This is precisely why fields such as PL semantics exist: They
try to make things as unambiguous and precise as possible, usually by
borrowing methods from mathematical logic, domain theory, category
theory, etc.  (By the way, our discussion here has not even scratched
the surface of any of that.)  The problem is that many (if not most)
people with some programming experience have learned things by
remembering a number of more or less (often much less) accurate
metaphors.  Confusion arises whenever the metaphor gets interpreted
too literally.

Example: Someone might explain the concept of a cons cell to a Lisp
newbie who has some C background by saying "Think of a little struct
with two fields."  This is close to the truth, but not close enough.
Much closer to the truth would have been to say "Think of a *pointer*
to a little struct with two fields."  The entire discussion about
copying a value vs. not copying a value is precisely due to the
confusion arising from this seemingly minor slipup.

> You yourself have said some things to me in this thread that struck me
> as rude.  However, I have not called you on it because I don't think
> your purpose was to be rude.  (I guess you're welcome to correct me on
> this if you intended to insult me and are annoyed you failed. :-)

I probably know what you mean.  Sorry about that.  I was just getting
a bit grumpy.

--
-Matthias


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Erann Gat  
View profile  
 More options May 3 2002, 3:55 pm
Newsgroups: comp.lang.lisp
From: g...@jpl.nasa.gov (Erann Gat)
Date: Fri, 03 May 2002 10:59:32 -0800
Local: Fri, May 3 2002 2:59 pm
Subject: Re: quest for pass-by-reference semantics in CL
In article <fooffxnx7z....@blume-pcmh.research.bell-labs.com>, Matthias

Blume <matth...@shimizu-blume.com> wrote:
> g...@jpl.nasa.gov (Erann Gat) writes:

> > In article <m33cxadkir....@hanabi.research.bell-labs.com>, Matthias Blume
> > <matth...@shimizu-blume.com> wrote:

> > > C books that explain things correctly exist.

> > Really?  Would you be so kind as to cite a few?

> Harbison & Steele.

That's one.  You said there were books - plural.

But the real point I was trying to make is that the canonical books --
Stroustrup and K&R -- are not on this list.

> > No need to write a couple of hundred, but it should be a number greater
> > than zero if you want to claim that it's not your fault that people don't
> > know this stuff.  People don't know this stuff because they read
> > Stroustrup's book instead of yours, because his exists and yours doesn't.

> I am not in the business of writing C or C++ books.  I cannot take the
> blame for every ommision and mistake of others just because I have not
> filled in the gap or provided the correction.  Or are you going to
> blame me for world hunger next?

Maybe.  Do you have the knowledge and the means to do something about
world hunger?  If you do and you chose not to do anything then yes, I
blame you for world hunger (to the extent that it exists because you chose
not to do what you could).

I *do* know that you have the knowledge and the means to write books about
C.  You've chosen not to.  Not only that, but you haven't even provided
pointers to the good books you say are already out there.  (You've now
provided one, but I had to drag that one out of you.)

So yes, you can take the blame for every omission and mistake of others
precisely because you have not filled in the gap or provided the
correction.  If not you, then who?

> > I didn't say it was a problem.  I didn't say it wasn't easy.  I just said
> > it was a substantial amount of work.

> But it isn't.

Yes, it is.  

> > You could prove me wrong by posting some code that shows how it's done.
> > If it's as dead-easy as you say it shouldn't take you very long.

> Write
>   struct foo * f (struct bar * x) ...
> where you would have written
>   struct foo f (struct bar x)
> Then replace occurences of "x." with "x->".

> (In C++ you don't even have to do the latter, IIRC.)

> This move from struct variables to "pointer to struct" variables must
> be applied, mutatis mutandis, to other parts of the program as well.
> But doing so is trivial.

Hogwash.  It's so non-trivial you had to resort to Latin to even
*describe* the process.  But even if the *description* of the process is
trivial doesn't mean the process itself is trivial.  (If you want to claim
that the process is trivial then you should post the code that will
automatically convert my C code to the new argument passing convention.)
And even if the process itself is trivial doesn't mean that the *quantity*
of work involved is small.  And that's what I'm talking about: a
"substantial amount" refers to the quantity of work, not its intellectual
difficulty.

But all this is moot because your solution is not even *correct*.  It
reproduces only one aspect of Lisp's calling semantics (the easy part),
and my claim was that reproducing "all aspects of Lisp's argument passing
semantics in C++" is a substantial amount of work.  That includes things
like &rest and &key.

So you are wrong.  Top to bottom, end to end, no matter how you slice it,
wrong.  And you have the temerity to call *me* a liar.  Foo!

E.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Erann Gat  
View profile  
 More options May 3 2002, 3:57 pm
Newsgroups: comp.lang.lisp
From: g...@jpl.nasa.gov (Erann Gat)
Date: Fri, 03 May 2002 11:28:27 -0800
Local: Fri, May 3 2002 3:28 pm
Subject: Re: quest for pass-by-reference semantics in CL
In article <jeAA8.16651$GG6.1048...@news3.calgary.shaw.ca>, "Coby Beck"

<cb...@mercury.bc.ca> wrote:
> While I agree heartily with Erann's post in this context, the above takes a
> philisophical bent I have never really thought fair.  It is summed up in the
> catch phrase "If you're not part of the solution, you're part of the
> problem"

I would say it slightly differently: if you *choose* not to be part of the
solution then you are part of the problem.  If you are unable to be part
of the solution then that (but only that) absolves you of responsibility.
IMHO.

> I have always prefered to rephrase that as "If you're not part of the
> problem, you're part of the solution"  I believe that is better as we are
> ultimately only responsible for our own actions (and inactions).

It's the "inaction" part that makes it all very slippery.

I don't know whether this is making the papers outside this country, but
here in the US the Catholic Church is currently embroiled in a scandal
involving priests who sexually abuse children.  At the epicenter of the
scandal is Cardinal Bernard Law of Boston, who knew this sexual abuse was
going on for years and did nothing to stop it.  Does he bear any
responsibility?  After all, he's only responsible for his own actions, and
he wasn't the one doing the raping.

It is astonishing to me that there is actually debate over this issue.

E.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Duane Rettig  
View profile  
 More options May 3 2002, 4:01 pm
Newsgroups: comp.lang.lisp
From: Duane Rettig <du...@franz.com>
Date: Fri, 03 May 2002 20:00:01 GMT
Local: Fri, May 3 2002 4:00 pm
Subject: Re: quest for pass-by-reference semantics in CL
ozan s yigit <o...@blue.cs.yorku.ca> writes:

Of course.  I assume that you are expanding the scope in agreement with
what I said.  My emphasis (which you snipped) was that the pass-by-value
semantics are key.  Most languages have the leeway to optimize away
actions when it can be determined that the semantics are preserved.  In
fact, in CL the compiler is allowed to not even call the specified
function, as long as the semantics are preserved _as_ _if_ the call
had been made.  This allows transformations from heavyweight
functionality to lighter weight functional implementations.

--
Duane Rettig          Franz Inc.            http://www.franz.com/ (www)
1995 University Ave Suite 275  Berkeley, CA 94704
Phone: (510) 548-3600; FAX: (510) 548-8253   du...@Franz.COM (internet)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Kenny Tilton  
View profile  
 More options May 3 2002, 4:10 pm
Newsgroups: comp.lang.lisp
From: Kenny Tilton <ktil...@nyc.rr.com>
Date: Fri, 03 May 2002 20:06:39 GMT
Local: Fri, May 3 2002 4:06 pm
Subject: Re: quest for pass-by-reference semantics in CL

Kent M Pitman wrote:

> When you start talking
> about what happens inside and how it's hidden by the surface language...

This whole thread reminds me of VAX/VMS. It has been a while, but DEC
did something cool with the languages they developed for VMS. they came
up with a standard call interface so inter-language calls were nothing
special. Except that one /did/ have to dig into stuff normally hidden by
the surface language.

If I was writing VAX BASIC and I wanted to call an OS routine (I 'spose
written in Macro, the VAX assembler, but it doesn't matter) I had to
look at what the OS function wanted (in the universal terms of the
standard calling convention, then look to the BASIC User Guide for the
default passing mechanism to see if they aligned.

In some cases I had to take the address of a Basic thingy with the LOC
function, but most of the time the default passing mechanism turned out
to be just dandy. COBOL had CALL...USING x BY REFERENCE y BY VALUE.

The punch line is that, IIRC, what I took to be call by reference
(passing a pointer) would be documented as a long being passed by value.
The doc would then say "the address of whatever". That really pissed me
off back then, but thx to this thread I now see why that was necessary.

fwiw, this anecdote does not contradict either side, which is my larger
point.

--

 kenny tilton
 clinisys, inc
 ---------------------------------------------------------------
"Harvey has overcome not only time and space but any objections."
                                                        Elwood P. Dowd


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Gabe Garza  
View profile  
 More options May 3 2002, 4:19 pm
Newsgroups: comp.lang.lisp
From: Gabe Garza <g_ga...@ix.netcom.com>
Date: Fri, 03 May 2002 20:19:02 GMT
Local: Fri, May 3 2002 4:19 pm
Subject: Re: quest for pass-by-reference semantics in CL
Kent M Pitman <pit...@world.std.com> writes:

> The fact is that people come to languages with very different
> backgrounds, and Lisp at least seeks to be a language of the common
> man, not just of CS elitists--at least, _I_ want that of it.  And so
> I will not put CS formalist terminology in between a potential Lisp
> convert and their success.  The Scheme community seems to not mind
> doing this, and this is one of many ways I generally prefer myself
> associated with this political party rather than that one...

   What I think is also ironic is that the issues being discussed
here--argument passing semantics--aren't nearly as relevant to
being a competent Lisp programmer as they are to being competent in
just about any other language.  

   I see an awful lot of confusion about this sort of thing with Delphi
programmers who I work with at MegaCorp--Delphi by default uses
different conventions then the rest of the universe, so interfacing to
foreign code can be tricky for novices. In addition to a C++ like
"feature" of being able to declare individual arguments as "pass by
reference," there are no fewer then *five* different qualifiers
available to change the semantics of how a method/procedure/function
should pass expect its arguments to be passed.

   Lisp gets it so very right: there's no worrying about what's been
stack allocated and what's been heap allocated, no worrying about if the
function you just called is going to modify the integer you passed it, you
can return multiple values by returning multiple values instead of having
an "argument" be a return value, etc.

   Languages that don't get it right put a huge burden on the programmer
right off the bat--a burden that I don't think novices should have to
deal with until they understand a host of other things...

Gabe Garza


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Matthias Blume  
View profile  
 More options May 3 2002, 4:21 pm
Newsgroups: comp.lang.lisp
From: Matthias Blume <matth...@shimizu-blume.com>
Date: 03 May 2002 16:17:36 -0400
Local: Fri, May 3 2002 4:17 pm
Subject: Re: quest for pass-by-reference semantics in CL

g...@jpl.nasa.gov (Erann Gat) writes:
> Maybe.  Do you have the knowledge and the means to do something about
> world hunger?  If you do and you chose not to do anything then yes, I
> blame you for world hunger (to the extent that it exists because you chose
> not to do what you could).

> I *do* know that you have the knowledge and the means to write books about
> C.

"Means" include time and sufficient interest.  I have neither.  People
do have to prioritize their resources.  Writing yet another C books is
very, very low on my priority list.  (I should probably also cut down
on my participation in this thread...)

> Hogwash.  It's so non-trivial you had to resort to Latin to even
> *describe* the process.  But even if the *description* of the process is
> trivial doesn't mean the process itself is trivial.  (If you want to claim
> that the process is trivial then you should post the code that will
> automatically convert my C code to the new argument passing convention.)

Oh, you want an automatic converter?  Now that's something quite
different.  I was thinking of writing my C code with Lisp value
representations in mind in the first place.  Doing so is at most a
tiny fraction harder than writing "normal" C code.

> But all this is moot because your solution is not even *correct*.  It
> reproduces only one aspect of Lisp's calling semantics (the easy part),
> and my claim was that reproducing "all aspects of Lisp's argument passing
> semantics in C++" is a substantial amount of work.  That includes things
> like &rest and &key.

Oh, come on now!  This has nothing to do with what we were talking
about.  Next thing you are probably going to insist in being able to
call your C functions without commas to separate the arguments...

> So you are wrong.  Top to bottom, end to end, no matter how you slice it,
> wrong.

All right, I am wrong.  Lisp does not have call-by-value semantics
because &key and &rest are difficult to emulate.  Now, there you have
it.  Happy?

--
-Matthias


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Matthias Blume  
View profile  
 More options May 3 2002, 4:41 pm
Newsgroups: comp.lang.lisp
From: Matthias Blume <matth...@shimizu-blume.com>
Date: 03 May 2002 16:23:53 -0400
Local: Fri, May 3 2002 4:23 pm
Subject: Re: quest for pass-by-reference semantics in CL

g...@jpl.nasa.gov (Erann Gat) writes:
> In article <jeAA8.16651$GG6.1048...@news3.calgary.shaw.ca>, "Coby Beck"
> <cb...@mercury.bc.ca> wrote:

> > While I agree heartily with Erann's post in this context, the above takes a
> > philisophical bent I have never really thought fair.  It is summed up in the
> > catch phrase "If you're not part of the solution, you're part of the
> > problem"

> I would say it slightly differently: if you *choose* not to be part of the
> solution then you are part of the problem.  If you are unable to be part
> of the solution then that (but only that) absolves you of responsibility.
> IMHO.

What if you can be part of the solution for either problem X or
problem Y, but not both.  If you choose X, are you now to blame for Y?

> I don't know whether this is making the papers outside this country, but
> here in the US the Catholic Church is currently embroiled in a scandal
> involving priests who sexually abuse children.  At the epicenter of the
> scandal is Cardinal Bernard Law of Boston, who knew this sexual abuse was
> going on for years and did nothing to stop it.  Does he bear any
> responsibility?  After all, he's only responsible for his own actions, and
> he wasn't the one doing the raping.

This is quite different.  If it were my job and duty to eradicate
misconceptions about the C language from this world and if I then fail
to do so, I am guilty.  But it is neither my job nor my duty, so give
me a break!

The question of whether or not Law is to blame in the sex scandal
boils down to whether or not it was his duty to stop his minions, or
to report them to the police.  I agree with you that the spectacle
around this is astonishing.

--
-Matthias


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Duane Rettig  
View profile  
 More options May 3 2002, 5:00 pm
Newsgroups: comp.lang.lisp
From: Duane Rettig <du...@franz.com>
Date: Fri, 03 May 2002 21:00:01 GMT
Local: Fri, May 3 2002 5:00 pm
Subject: Re: quest for pass-by-reference semantics in CL

Matthias Blume <matth...@shimizu-blume.com> writes:
> Duane Rettig <du...@franz.com> writes:

> > No, this is not what I'm trying to say.  In Lisp the list (1 2 3)
> > is very well-defined to be not one value, but three values:
> >   1. a cons cell whose car contains 1 and whose(2 3),
> >   2. a cons cell whose car is 2 and whose cdr contains (3), and
> >   3. a cons cell whose car is 3 and whose cdr is nil.

> > If Lisp were pass-by-value, then one whole cons cell would be copied
> > on passing (like a C struct).

> No, there is no Lisp equivalent to a C struct variable!

It is this difference (the extra complexity that entire structs are
"values" in C, whereas other arrays and strings are not) that make
it inappropriate to say that C and Lisp calling sequences are the
same.

In order to call Lisp call-by-value (or even C, for that matter),
you would have to define "value".  You have made implications and
descriptions to this effect, but you have never once offered any
actual references defining what a value is in C, let alone Lisp.
Please find me any precise definition of value for either C or
Lisp.

> > > It does not cause any problems.  What causes problems for you is that
> > > you do not seem to have a very good grasp of the concept of "value".

> > And, of course, you do.  Unless you can back your claims, I guess we'll
> > have to agree to disagree.

> I think I do.  You are welcome to disagree, of course.

I do disagree, of course - you have not backed your claims at all.
In this whole thread up to the time I am writing this response, you
have not once mentioned any references to back up the facts you
are purporting.  (you did come close once, citing two authors, but
that's not a reference; if you were to put that in a bibliography
on a test, I would have thrown that reference out).  Unless and
until you back your arguments with references, you will have
failed to convince me of your positions.

--
Duane Rettig          Franz Inc.            http://www.franz.com/ (www)
1995 University Ave Suite 275  Berkeley, CA 94704
Phone: (510) 548-3600; FAX: (510) 548-8253   du...@Franz.COM (internet)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Kent M Pitman  
View profile  
 More options May 3 2002, 5:12 pm
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: Fri, 3 May 2002 21:10:52 GMT
Local: Fri, May 3 2002 5:10 pm
Subject: Re: quest for pass-by-reference semantics in CL

Matthias Blume <matth...@shimizu-blume.com> writes:
> ... Just make sure that you use terms that actually
> describe accurately what's going on in Lisp, but don't coin new terms
> for things for which there are perfectly good language-independent
> terms available.  "Call-by-value" is an example for such a term.

For varying values of "perfectly good".

I'm reminded of graffiti I saw scribbled on the wall of a toilet stall
when I first arrived at MIT:

 limit(sqrt(10))->3 for very small values of 10.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Kent M Pitman  
View profile  
 More options May 3 2002, 5:15 pm
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: Fri, 3 May 2002 21:13:57 GMT
Local: Fri, May 3 2002 5:13 pm
Subject: Re: quest for pass-by-reference semantics in CL
tb+use...@becket.net (Thomas Bushnell, BSG) writes:

> Kent M Pitman <pit...@world.std.com> writes:

> > At the surface level, it is pointless and a distraction to teach it this
> > way.  

> Certainly.  But a completel understanding of programming languages
> usually requires something more than just the surface level.

To be clear, this discussion didn't arise from someone trying to discuss
the complete understanding of all languages.  It arose from someone taking
exception to my attempts to help a newbie to Lisp get past a specific
conceptual problem and become a competent programmer in CL.  As such, I
claim the moral high ground as to the purposeful context of my remarks.

If someone wants to start a new thread about how theorists should view it,
that's an utterly different discussion.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Erik Naggum  
View profile  
 More options May 3 2002, 5:20 pm
Newsgroups: comp.lang.lisp
From: Erik Naggum <e...@naggum.net>
Date: Fri, 03 May 2002 21:20:23 GMT
Local: Fri, May 3 2002 5:20 pm
Subject: Re: quest for pass-by-reference semantics in CL
* Erann Gat
| So yes, you can take the blame for every omission and mistake of others
| precisely because you have not filled in the gap or provided the
| correction.  If not you, then who?

  Not all cultures believe in the necessity of a guilt trip to get to
  Heaven.  Sometimes, there simply is no one to _blame_, nothing to be or
  feel guilty for.  Some cultures are evidently unable to deal with a lack
  of someone to blame and even go on to believe in religious figures who
  assume this role on behalf of others.  Members of those cultures go on to
  _produce_ malevolence and misery with their fault-finding missions, where
  the designated blamee must bear the brunt for all the ills of the world.
  The Biblical story of the scapegoat is worth knowing and remembering for
  people who have to deal with members of such cultures.

  Reasonable people will reject these theories of blame, guilt trips, and
  scapegoats as inherently anti-moral instruments of abusive power, the
  likes of which have been expelled from the West ages ago, but which still
  causes wars to be raged in the region of their origin.

  Quit bringing your offensive blame and guilt crap to comp.lang.lisp.
--
  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.

  70 percent of American adults do not understand the scientific process.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Coby Beck  
View profile  
 More options May 3 2002, 5:37 pm
Newsgroups: comp.lang.lisp
From: "Coby Beck" <cb...@mercury.bc.ca>
Date: Fri, 03 May 2002 21:37:57 GMT
Local: Fri, May 3 2002 5:37 pm
Subject: Re: quest for pass-by-reference semantics in CL

Matthias Blume <matth...@shimizu-blume.com> wrote in message

news:fovga5ko5w.fsf@blume-pcmh.research.bell-labs.com...

> Kent M Pitman <pit...@world.std.com> writes:

> > Coby didn't say you were uneducated; just the opposite.  His statement
> > does not appear to be about _you_, it's about the subjective goodness
> > of the situation in which you find or place yourself.

> I know what he wrote.  He basically harped on the old "ivory tower"
> thing, with more than just an innuendo that I might have lost touch
> with reality because of whatever education I might have.  I find that
> rude.

Only arrogance finds criticism rude.  You have made many bold and dismissive
claims about other people's view points and repeatedly appealed to authority
that you refuse to cite.  It warrants being blunt.  (which was my intention,
not rudeness).

And you should re-read what I wrote, it has just about zero to do with the
"ivory tower" thing.  It is about how language and education can actually
inhibit the ability to think and the ability to communicate with people from
other backgrounds.  It is a linguistic and philisophical issue, not a class
issue.

(I almost said "think outside the box" but these days, that's pretty much
inside the box ;)

--
Coby Beck
(remove #\Space "coby 101 @ bigpond . com")


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Erann Gat  
View profile  
 More options May 3 2002, 5:56 pm
Newsgroups: comp.lang.lisp
From: g...@jpl.nasa.gov (Erann Gat)
Date: Fri, 03 May 2002 13:07:06 -0800
Local: Fri, May 3 2002 5:07 pm
Subject: Re: quest for pass-by-reference semantics in CL
In article <for8ktkmu7....@blume-pcmh.research.bell-labs.com>, Matthias

Blume <matth...@shimizu-blume.com> wrote:
> All right, I am wrong.  Lisp does not have call-by-value semantics
> because &key and &rest are difficult to emulate.  Now, there you have
> it.  Happy?

No, because that's not what you're wrong about.  You're right, Lisp *does*
have call-by-value semantics.  (I said so at the beginning of this
discussion.)

What you're wrong about is your apparent belief that it is reasonable to
expect a C programmer to obtain an accurate understanding of how Lisp
function parameters work by saying simply, "It's call-by-value, just as in
C" and leaving it at that.  Yes, you are technically correct, but it
doesn't help a C programmer understand why when he passes a struct by
value he gets a copy of the struct, but when he passes a list by value he
doesn't get a copy of the list.

This is not about technicalities.  This is about pedagogy.  It's not about
being right.  It's about helping people understand.  What you're wrong
about is your belief that those two things are the same.

E.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Erann Gat  
View profile  
 More options May 3 2002, 5:58 pm
Newsgroups: comp.lang.lisp
From: g...@jpl.nasa.gov (Erann Gat)
Date: Fri, 03 May 2002 14:37:08 -0700
Local: Fri, May 3 2002 5:37 pm
Subject: Re: quest for pass-by-reference semantics in CL
In article <fon0vhkmjq....@blume-pcmh.research.bell-labs.com>, Matthias

Blume <matth...@shimizu-blume.com> wrote:
> > I would say it slightly differently: if you *choose* not to be part of the
> > solution then you are part of the problem.  If you are unable to be part
> > of the solution then that (but only that) absolves you of responsibility.
> > IMHO.

> What if you can be part of the solution for either problem X or
> problem Y, but not both.  If you choose X, are you now to blame for Y?

Yep.  Life's full of tough choices.

> > I don't know whether this is making the papers outside this country, but
> > here in the US the Catholic Church is currently embroiled in a scandal
> > involving priests who sexually abuse children.  At the epicenter of the
> > scandal is Cardinal Bernard Law of Boston, who knew this sexual abuse was
> > going on for years and did nothing to stop it.  Does he bear any
> > responsibility?  After all, he's only responsible for his own actions, and
> > he wasn't the one doing the raping.

> This is quite different.  If it were my job and duty to eradicate
> misconceptions about the C language from this world and if I then fail
> to do so, I am guilty.  But it is neither my job nor my duty, so give
> me a break!

I wouldn't compare what you're doing to what Cardinal Law did; that
example was strictly to refute Coby's moral stance.  However, I would say
that if you disclaim responsibility for clarifying misconceptions about
about C then you have no basis for complaint when those who do choose to
take on the task of clarifying those misconceptions do so in a manner that
is not to your liking.  Put up or shut up.  It's very annoying for those
who are trying to clear this up to have to deal with pot shots -- well
informed though they may be -- lobbed from the sidelines.

E.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Matthias Blume  
View profile  
 More options May 3 2002, 5:58 pm
Newsgroups: comp.lang.lisp
From: Matthias Blume <matth...@shimizu-blume.com>
Date: 03 May 2002 17:38:36 -0400
Local: Fri, May 3 2002 5:38 pm
Subject: Re: quest for pass-by-reference semantics in CL

Duane Rettig <du...@franz.com> writes:
> > No, there is no Lisp equivalent to a C struct variable!

> It is this difference (the extra complexity that entire structs are
> "values" in C, whereas other arrays and strings are not) that make
> it inappropriate to say that C and Lisp calling sequences are the
> same.

This is not correct.  The important difference that accounts for much
of the misunderstanding is that the locations of an entire struct can
be denoted by a variable in C, but not in Lisp.  While this is a
difference, it does not make it inapropriate to say that C and Lisp
parameter passing semantics are the same.  In fact, the meaning of
"call-by-value" gives you C semantics when applied to the C meaning of
variables (including those of struct type), and it gives you Lisp
semantics when applied to the meaning of Lisp variables (of which
there are none that denote structs).

In your choice of words ("calling sequences") I detect that you still
are confused about the very subject of our discussion.  We are not
talking about "calling sequences".  We are talking about the semantics
of parameter passing.  Calling sequences are a concrete means of
implementing parameter passing semantics, but there is no 1-1 mapping
between the two.

I have explained several times what the distinction is between cbv,
cbr, and cbn.  I have also pointed out that the distinction does not
depend on the nature of values.  Instead, it characterizes how formal
parameters relate to their respective actual arguments (or argument
expressions).

> In this whole thread up to the time I am writing this response, you
> have not once mentioned any references to back up the facts you
> are purporting.

These things are standard CS terminology.  You can read about them in
any textbook on PL semantics.  To give you something concrete to look
at, I recommend having a look at the definition of Scheme.  The
authors of the Scheme report makes a very strong effort at being
precise by actually giving a formal denotational semantics.  Now,
Scheme is not a Lisp :-), but as far as the semantics of parameter
passing is concerned, the two are close enough. So have a look at the
denotational semantics section of, e.g., R5RS.  (The report also comes
with numerous references to relevant literature.  You will probably
need those because my guess is that you will be familiar with neither
the notation nor the theory used in that section.)

>  (you did come close once, citing two authors,

You mean "Harbison and Steele"?  This is almost as well-known as K&R,
sometimes even similarly abbreviated as H&S.  Of course, I did not
give you a bibtex entry for it.  I am not publishing a paper here.

> but that's not a reference; if you were to put that in a
> bibliography on a test, I would have thrown that reference out).

What "test"?  Am I being tested here? :-)

>  Unless and until you back your arguments with references, you will
> have failed to convince me of your positions.

Oh, worry not.  I can live with that. :-)

--
-Matthias


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Erann Gat  
View profile  
 More options May 3 2002, 6:58 pm
Newsgroups: comp.lang.lisp
From: g...@jpl.nasa.gov (Erann Gat)
Date: Fri, 03 May 2002 15:40:08 -0700
Local: Fri, May 3 2002 6:40 pm
Subject: Re: quest for pass-by-reference semantics in CL

In article <3229449622411...@naggum.net>, Erik Naggum <e...@naggum.net> wrote:
> * Erann Gat
> | So yes, you can take the blame for every omission and mistake of others
> | precisely because you have not filled in the gap or provided the
> | correction.  If not you, then who?

>   Not all cultures believe in the necessity of a guilt trip to get to
>   Heaven.  Sometimes, there simply is no one to _blame_, nothing to be or
>   feel guilty for.  Some cultures are evidently unable to deal with a lack
>   of someone to blame and even go on to believe in religious figures who
>   assume this role on behalf of others.  Members of those cultures go on to
>   _produce_ malevolence and misery with their fault-finding missions, where
>   the designated blamee must bear the brunt for all the ills of the world.
>   The Biblical story of the scapegoat is worth knowing and remembering for
>   people who have to deal with members of such cultures.

The difference is that the scapegoat didn't go around calling people liars
because they tried to educate others in ways that it didn't approve of.

>   Quit bringing your offensive blame and guilt crap to comp.lang.lisp.

Eat my shorts, Erik.

E.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Greg Menke  
View profile  
 More options May 3 2002, 7:27 pm
Newsgroups: comp.lang.lisp
From: Greg Menke <gregm-use...@mindspring.com>
Date: 03 May 2002 19:26:48 -0400
Local: Fri, May 3 2002 7:26 pm
Subject: Re: quest for pass-by-reference semantics in CL

> Oh, you want an automatic converter?  Now that's something quite
> different.  I was thinking of writing my C code with Lisp value
> representations in mind in the first place.  Doing so is at most a
> tiny fraction harder than writing "normal" C code.

Greenspun strikes again!

;)

Gregm


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ozan s yigit  
View profile  
 More options May 3 2002, 8:30 pm
Newsgroups: comp.lang.lisp
From: ozan s yigit <o...@blue.cs.yorku.ca>
Date: 03 May 2002 20:23:00 -0400
Subject: Re: quest for pass-by-reference semantics in CL

>                            ... The mistake is to assume, as newly
> elected Presidents of the US often do, that the mere fact of election
> to office construes mandate or even approval of all of one's detailed
> agenda; it just means that the entire package, taken as a whole, was
> better than another entire package.

but the question had to do with the historic practice of the community,
not some arbitrary approval of a political point or agenda everyone grumbled
about afterwards. in that long post [i did not duplicate] i understand you
to be saying that in the last twenty or thirty years, lisp community [a much
abused term, that] disagreed with its language designers, authors, theorists
in terminology, or that all of that terminology was mere politics on the part
of whomever used it for whatever reason. people like steele and gabriel have
talked about evolution of lisp in great adetail[1] but i don't recall any
mention of any such fundamental terminology problem. when did it start?
in the CL standards work?

oz
---
[1] Bergin & Gibson, "History of Programming Languages", Addison Wesley, 1996


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Messages 126 - 150 of 252 < Older  Newer >
« Back to Discussions « Newer topic     Older topic »