From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Proposed change to BC iterator parameters
Date: 11 Dec 2003 10:24:37 -0500
Date: 2003-12-11T10:24:37-05:00 [thread overview]
Message-ID: <wccisknv0lm.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: FYSBb.359924$275.1185626@attbi_s53
"Steve" <nospam_steved94@comcast.net> writes:
> "Robert A Duff" <bobduff@shell01.TheWorld.com> wrote in message
> news:wccekvc2rol.fsf@shell01.TheWorld.com...
> [snip]
> >
> > I don't understand the point of Param_Type and Param above. If you want
> > to pass extra information to Apply, nest the instantiation in a place
> > where it can see that data.
>
> The reason for Param_Type and Param is to avoid using data outside of the
> scope of the Apply routine except for the arguments to the Apply machine.
> It comes from that old school of thought:
> Avoid global data
> All inputs and outputs of a procedure should appear in their parameter
> lists
>
> Following these simple guidelines usually makes code a lot easier to follow.
The data we're talking about is not *very* global. It's local to the
procedure containing the instantiation. Yes, it's global to the actual
procedure passed to Apply, but that's probably a pretty small region of
code.
This seems like a lot of mechanism for little if any gain. Consider
what you have to do if you want to pass *two* parameters. You have to
wrap them in a record type, fill in the record fields, extract them out.
Seems verbose and error prone, to me.
Do you really follow the above guideline *strictly*? It seems to me a
useful guideline in many cases, but there are many cases where it would
be damaging. For example, consider a package that behaves like what
Lisp calls "symbols". The Intern routine puts a string in a hash table,
and returns a unique identifier of that string (so if you Intern the
same thing twice, you get back the same identifier). Then "=" can be
extremely efficient. But it doesn't work if you have more than one hash
table. So the right thing is to put the hash table in the package body
-- not allow clients to choose which table to pass to Intern.
- Bob
next prev parent reply other threads:[~2003-12-11 15:24 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-12-10 13:36 Proposed change to BC iterator parameters amado.alves
2003-12-10 16:47 ` Proposed change to BC iterator parameters [limitedness] Georg Bauhaus
2003-12-10 17:39 ` Proposed change to BC iterator parameters Martin Krischik
2003-12-10 18:22 ` Jeffrey Carter
2003-12-10 23:00 ` Robert A Duff
2003-12-11 1:00 ` Jeffrey Carter
2003-12-11 15:09 ` Robert A Duff
2003-12-11 8:33 ` Dmitry A. Kazakov
2003-12-10 20:50 ` Simon Wright
2003-12-10 23:12 ` Robert A Duff
2003-12-11 5:07 ` Steve
2003-12-11 15:24 ` Robert A Duff [this message]
2003-12-11 17:39 ` Jeffrey Carter
2003-12-12 22:22 ` Robert A Duff
2003-12-13 0:57 ` Jeffrey Carter
2003-12-17 20:59 ` Robert A Duff
2003-12-18 10:05 ` Dmitry A. Kazakov
2003-12-18 18:14 ` Robert A Duff
2003-12-19 10:53 ` Dmitry A. Kazakov
2003-12-19 16:17 ` Georg Bauhaus
2003-12-19 17:19 ` Dmitry A. Kazakov
2003-12-19 22:51 ` Robert A Duff
2003-12-20 12:20 ` Dmitry A. Kazakov
2003-12-19 22:47 ` Robert A Duff
2003-12-20 2:11 ` Stephen Leake
2003-12-20 19:08 ` Robert I. Eachus
2003-12-21 11:39 ` Simon Wright
2003-12-21 18:13 ` Robert I. Eachus
2003-12-21 13:58 ` Dmitry A. Kazakov
2003-12-22 1:25 ` Robert I. Eachus
[not found] ` <916oa1-c93.ln1@beastie.ix.netcom.com>
2003-12-13 16:57 ` Simon Wright
2003-12-12 5:29 ` Simon Wright
2003-12-12 22:26 ` Robert A Duff
2003-12-13 16:55 ` Simon Wright
2003-12-13 17:27 ` Dmitry A. Kazakov
2003-12-13 2:44 ` Steve
-- strict thread matches above, loose matches on Subject: below --
2003-12-23 10:40 amado.alves
2003-12-19 15:53 amado.alves
2003-12-19 23:05 ` Robert A Duff
2003-12-11 16:02 amado.alves
2003-12-11 15:05 ada_wizard
2003-12-11 16:45 ` Robert A Duff
2003-12-11 12:56 amado.alves
2003-12-17 20:25 ` Robert A Duff
2003-12-11 12:43 amado.alves
2003-12-11 12:33 amado.alves
2003-12-10 14:39 amado.alves
2003-12-10 5:46 Simon Wright
2003-12-10 18:12 ` Jeffrey Carter
2003-12-11 16:10 ` Martin Krischik
2003-12-10 20:59 ` Simon Wright
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox