Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #7816

Re: Style Police (a rant)

From Wanja Gayk <brixomatic@yahoo.com>
Newsgroups comp.lang.java.programmer
Subject Re: Style Police (a rant)
Date 2011-09-11 21:20 +0200
Organization Netfront http://www.netfront.net/
Message-ID <MPG.28d727a0ecb36f769896b4@202.177.16.121> (permalink)
References (1 earlier) <j3akb0$61g$1@news.albasani.net> <MPG.28d509bfb828d36d9896ad@202.177.16.121> <slrnj6mj4j.6gl.avl@gamma.logic.tuwien.ac.at> <d056de37-3406-4ea1-950e-cd762fa35b6b@glegroupsg2000goo.googlegroups.com> <slrnj6pg53.6gl.avl@gamma.logic.tuwien.ac.at>

Show all headers | View raw


In article <slrnj6pg53.6gl.avl@gamma.logic.tuwien.ac.at>, 
avl@gamma.logic.tuwien.ac.at says...

> > Wanja's main point is that 'final' has a semantic purpose, not an
> > optimization one.
> 
> So far I agree.

Well understood.

> >   I agree that the evidence for the advantage of a 'var' keyword
> > over a 'final' is lacking,
> 
> That Wanja suggested the "var" keyword is an indication of that he has
> a bias towards functional programming. 

Hm, I can't really say that this is the case. It's just in the past few 
years that I'm adopting rather functional paradigms, which in Java 
mostly boils down to using the strategy pattern and a preference towards 
methods that are free of side-effects.
But using "finally" a lot has hardly anything to do with functional 
programming in my opinion.
I'm doing it for the sake of precision of expression (don't declare 
something variable if it's not) and staying focussed. Anything that is 
not "final" immediately draws my attention for being a subject of 
change, which means I can forget about most of the variables when 
analyzing code. This is also why I narrow the scope of variables a lot.

Here's an example:

I have seen code that looks like this:

//O(n*n) runtime, but "in place", suitable only if 
//memory is far more important than runtime.
//
//[][1,2,3,4,3,2,1] head contains 1 ? -> false
//[1][2,3,4,3,2,1] head contains 2 ? -> false
//[1,2][3,4,3,2,1] head contains 3 ? -> false
//[1,2,3][4,3,2,1] head contains 4 ? -> false
//[1,2,3,4][3,2,1] head contains 3 ? -> true
//[1,2,3,4][2,1] head contains 2 ? -> true
//[1,2,3,4][1] head contains 1 ? -> true
//[1,2,3,4][] 	
public <T> void withoutDupes(Iterable<T> iterable) {
	Iterator<T> tail = iterable.iterator();
	int tailIndex = -1;
       int headIndex = 0;
       Iterator<T> head = null;
	T head ofTail = null;
	T objectInHead = null;
	while (tail.hasNext()) {			
		tailIndex++;
		headOfTail = tail.next();
		headIndex = 0;
		head = iterable.iterator();
		while (headIndex++ < tailIndex) {
			objectInHead = head.next();
			if (matches(headOfTail, objectInHead)) {
				tail.remove();
				tailIndex = tailIndex-1;
				break;
			}
		}
	}
}

I find this unnecessary hard to follow, because I have a hard time to 
see which value changes when and where a value is needed.
I first start to reduce the scope of the variables, which also kills 
unnecessary initializations:

public <T> void withoutDupes(Iterable<T> iterable) {
	Iterator<T> tail = iterable.iterator();
	int tailIndex = -1;
	while (tail.hasNext()) {			
		tailIndex++;
		T headOfTail = tail.next();
		int headIndex = 0;
		Iterator<T> head = iterable.iterator();
		while (headIndex++ < tailIndex) {
			T objectInHead = head.next();
			if (matches(headOfTail, objectInHead)) {
				tail.remove();
				tailIndex = tailIndex-1;
				break;
			}
		}
	}
}

Then I would add the "finally"-keyword to any place appropriate, Ecipses 
source-"clean up" function does that for me, so it's just three or four 
few mouseclicks/keystrokes away:

public <T> void withoutDupes(final Iterable<T> iterable) {
	final Iterator<T> tail = iterable.iterator();
	int tailIndex = -1;
	while (tail.hasNext()) {			
		tailIndex++;
		final T headOfTail = tail.next();
		int headIndex = 0;
		final Iterator<T> head = iterable.iterator();
		while (headIndex++ < tailIndex) {
			final T objectInHead = head.next();
			if (matches(headOfTail, objectInHead)) {
				tail.remove();
				tailIndex = tailIndex-1;
				break;
			}
		}
	}
}

At this point I find the code a lot easier to follow, because I have 
less variables to trace and their scope is limited. It looks even better 
in the IDE, because of the syntax highlighting.
The variables "tailIndex" and "headIndex" immediately catch my 
attention, they are not preceeded with "finally" so those are the 
running variables and as such the most interesting when tracng the code. 
Still that would not satisfy me. As a final touch I'd change the 
increments where appropriate to clarify the order of evaluation, because 
"if(i++ < 10){...}" 
is short for 
"int temp = i; i=i+1; if(temp < 10){..}"
which is unnecessarily complicated.

So as I would end up with:

public <T> void withoutDupes(final Iterable<T> iterable) {
	Iterator<T> tail = iterable.iterator();
	int tailIndex = -1;
	while (tail.hasNext()) {			
		++tailIndex;
		T headOfTail = tail.next();
		int headIndex = -1;
		Iterator<T> head = iterable.iterator();
		while (++headIndex < tailIndex) {
			T objectInHead = head.next();
			if (matches(headOfTail, objectInHead)) {
				tail.remove();
				--tailIndex;
				break;
			}
		}
	}
}

Now this is a code I find a lot easier to understand than the first 
version, that looked like this:

public <T> void withoutDupes(Iterable<T> iterable) {
	Iterator<T> tail = iterable.iterator();
	int tailIndex = -1;
       int headIndex = 0;
       Iterator<T> head = null;
	T head ofTail = null;
	T objectInHead = null;
	while (tail.hasNext()) {			
		tailIndex++;
		headOfTail = tail.next();
		headIndex = 0;
		head = iterable.iterator();
		while (headIndex++ < tailIndex) {
			objectInHead = head.next();
			if (matches(headOfTail, objectInHead)) {
				tail.remove();
				tailIndex = tailIndex-1;
				break;
			}
		}
	}
}

Still I could refactor out one or two methods, but at this time I would 
probably stop and call it a day.

> Unlike Arne, I don't say that
> "pick a different language" is an appropriate answer. It's ok, to program
> functionally in Java, as far as possible in Java-syntax, and that this
> may lead to quite a lot of "final"s.
> I just disagree with Wanja as to making "final" the default: it's
> like bullying others to functional style in Java.

The above code is by no means functional, is it?

Functional code would rather look like this:

public <T> List<T> withoutDupes(final List<T> xs) {
 return new Object() {
  <T> List<T> withoutDupes(final List<T> head, final List<T> tail) {
   if(tail.isEmpty()){return head;}   
   if (head.contains(tail.get(0))) {
    return withoutDupes(head, tail.subList(1, tail.size()));
   }
   return withoutDupes(
      new ArrayList<T>(head){{add(tail.get(0));}}
    , tail.subList(1, tail.size())
   );
  }
 }.withoutDupes(Collections.<T>emptyList(), xs);
}

This is a whole different beast (and prone to crash with a stack 
overflow exception on larger lists by the way).
Admitted, it is not entirely functional due to the "add"-call, but quite 
close. Still it is pretty compact code (there is a certain beauty in 
recursion, isn't it?) and not hard to understand either. 

Bullying someone to functional code would be pretty stupid, as the 
current JVMs still have a hard time detecting tail recursions and it 
lacks data structures that do lazy evaluation in the Java SE.

Kind regards,
Wanja

-- 
..Alesi's problem was that the back of the car was jumping up and down 
dangerously - and I can assure you from having been teammate to 
Jean Alesi and knowing what kind of cars that he can pull up with, 
when Jean Alesi says that a car is dangerous - it is. [Jonathan Palmer]

--- Posted via news://freenews.netfront.net/ - Complaints to news@netfront.net ---

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Style Police (a rant) Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-08-26 20:56 -0400
  Re: Style Police (a rant) Robert Klemme <shortcutter@googlemail.com> - 2011-08-27 09:58 +0200
  Re: Style Police (a rant) Rajiv Gupta <rajiv@invalid.com> - 2011-08-27 18:02 +1000
    Re: Style Police (a rant) v_borchert@despammed.com (Volker Borchert) - 2011-08-27 08:40 +0000
  Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-27 13:27 +0200
    Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-27 13:33 +0200
      Re: Style Police (a rant) Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-08-27 11:08 -0400
      Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-27 08:34 -0700
        Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-27 08:37 -0700
        Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-27 17:59 +0200
          Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-27 18:06 +0200
            Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-27 18:08 +0200
            Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-27 09:50 -0700
              Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-27 19:15 +0200
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-27 13:09 -0700
                Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-27 23:18 +0200
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-27 16:10 -0700
                Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-28 01:59 +0200
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-27 18:59 -0700
                Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-28 15:32 +0200
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-28 13:09 -0700
                Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-29 04:02 +0200
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-28 19:20 -0700
                Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-29 09:44 +0200
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-29 08:30 -0700
                Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-29 16:37 +0000
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-29 12:10 -0700
                Re: Style Police (a rant) Robert Klemme <shortcutter@googlemail.com> - 2011-08-29 18:21 +0200
                Re: Style Police (a rant) Jan Burse <janburse@fastmail.fm> - 2011-08-29 04:06 +0200
    Re: Style Police (a rant) Wanja Gayk <brixomatic@yahoo.com> - 2011-09-10 06:45 +0200
      Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-10 11:40 +0000
        Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-09-10 14:06 -0700
          Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-11 14:07 +0000
            Re: Style Police (a rant) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-11 10:55 -0400
              Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-11 23:34 +0000
            Re: Style Police (a rant) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-11 10:58 -0400
              Re: Style Police (a rant) Patricia Shanahan <pats@acm.org> - 2011-09-11 10:12 -0700
              Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-14 12:22 +0000
              Re: Style Police (a rant) Bent C Dalager <bcd@pvv.ntnu.no> - 2011-09-14 15:04 +0000
                Re: Style Police (a rant) Paul Cager <paul.cager@googlemail.com> - 2011-09-14 09:36 -0700
            Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-09-11 09:47 -0700
              Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-11 23:32 +0000
                Re: Style Police (a rant) Wanja Gayk <brixomatic@yahoo.com> - 2011-09-17 00:57 +0200
                Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-17 19:56 +0000
            Re: Style Police (a rant) Wanja Gayk <brixomatic@yahoo.com> - 2011-09-11 21:20 +0200
              Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-11 17:11 -0400
                Re: Style Police (a rant) Wanja Gayk <brixomatic@yahoo.com> - 2011-09-12 01:22 +0200
                Re: Style Police (a rant) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-11 21:13 -0400
                Re: Style Police (a rant) Retahiv Oopsiscame <roopsisc@gmail.com> - 2011-09-11 16:54 -0700
                Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-11 23:42 -0400
                Re: Style Police (a rant) Retahiv Oopsiscame <roopsisc@gmail.com> - 2011-09-12 21:54 -0700
                Re: Style Police (a rant) "Cthun" <cthun_117@qmail.net.au> - 2011-09-13 07:18 -0400
                Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-13 10:07 -0400
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-09-13 08:15 -0700
                Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-13 12:00 -0400
                Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-13 10:10 -0400
                Re: Style Police (a rant) Retahiv Oopsiscame <roopsisc@gmail.com> - 2011-09-13 09:55 -0700
                Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-15 10:37 -0400
                Re: Style Police (a rant) "Cthun" <cthun_9112011@qmail.net.au> - 2011-09-15 22:58 -0400
                Murphy = Troll [DO NOT FEED] thoolen <th00len@th0lenbot.thorium> - 2011-09-16 00:23 -0400
                Re: Style Police (a rant) Retahiv Oopsiscame <roopsisc@gmail.com> - 2011-09-16 03:26 -0700
                Re: Style Police (a rant) un-Bent <dob@dib.dib.null> - 2011-09-16 13:02 +0000
                Murphy = Troll [DO NOT FEED] thoolen <th00len@th0lenbot.thorium> - 2011-09-16 22:40 -0400
                Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-17 19:36 -0400
                Re: Style Police (a rant) "kaffel'latte" <jiggingjava@qmail.net> - 2011-09-19 08:58 -0400
                Re: Style Police (a rant) thoolen <th00len@th0lenbot.thorium> - 2011-09-19 11:56 -0400
                Re: Style Police (a rant) "kaffel'latte" <jiggingjava@qmail.net> - 2011-09-19 17:05 -0400
                Re: Style Police (a rant) thoolen <th00len@th0lenbot.thorium> - 2011-09-19 19:13 -0400
                Re: Style Police (a rant) k00k Derbyshire spins freely "kaffel'latte" <jiggingjava@qmail.net> - 2011-09-19 20:45 -0400
                Re: Style Police (a rant) k00k Derbyshire spins freely thoolen <th00len@th0lenbot.thorium> - 2011-09-21 18:37 -0400
                Re: Style Police (a rant) "Cthun" <cthun_117@qmail.net.au> - 2011-09-12 04:56 -0400
                Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-12 05:12 -0400
                Re: Style Police (a rant) "Cthun" <cthun_117@qmail.net.au> - 2011-09-12 04:59 -0400
                Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-12 05:13 -0400
              Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-11 23:17 +0000
                Re: Style Police (a rant) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-11 21:12 -0400
                Re: Style Police (a rant) Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-12 07:36 -0300
              Re: Style Police (a rant) "Cthun" <cthun_117@qmail.net.au> - 2011-09-12 04:58 -0400
                Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-12 05:12 -0400
        Re: Style Police (a rant) Wanja Gayk <brixomatic@yahoo.com> - 2011-09-11 15:33 +0200
          Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-09-11 09:42 -0700
            Re: Style Police (a rant) Lars Enderin <lars.enderin@telia.com> - 2011-09-11 20:35 +0200
              Re: Style Police (a rant) Retahiv Oopsiscame <roopsisc@gmail.com> - 2011-09-11 16:55 -0700
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-09-11 20:36 -0700
                Re: Style Police (a rant) Lars Enderin <lars.enderin@telia.com> - 2011-09-12 10:05 +0200
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-09-12 15:35 -0700
                Re: Style Police (a rant) Lars Enderin <lars.enderin@telia.com> - 2011-09-13 10:35 +0200
                Re: Style Police (a rant) Retahiv Oopsiscame <roopsisc@gmail.com> - 2011-09-13 09:48 -0700
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-09-13 12:18 -0700
                Re: Style Police (a rant) Retahiv Oopsiscame <roopsisc@gmail.com> - 2011-09-13 17:30 -0700
                Re: Style Police (a rant) Retahiv Oopsiscame <roopsisc@gmail.com> - 2011-09-12 21:59 -0700
                Re: Style Police (a rant) Joe Attardi <jattardi@gmail.com> - 2011-09-23 10:54 -0700
                Re: Style Police (a rant) thoolen <th00len@th0lenbot.thorium> - 2011-09-24 01:54 -0400
                Re: Style Police (a rant) "tholen@antispam.ham" <tholen@ifa.hawaii.edu> - 2011-09-24 02:58 -0700
                Re: Style Police (a rant) thoolen <th00len@th0lenbot.thorium> - 2011-09-24 11:35 -0400
                Re: Style Police (a rant) Retahiv Oopsiscame <roopsisc@gmail.com> - 2011-09-12 21:58 -0700
                Re: Style Police (a rant) "Cthun" <cthun_117@qmail.net.au> - 2011-09-12 04:52 -0400
                Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-12 05:14 -0400
                Re: Style Police (a rant) "Cthun" <cthun_117@qmail.net.au> - 2011-09-12 06:42 -0400
                Re: Style Police (a rant) Cthun <cthun_117@qmail.net.au> - 2011-09-12 07:20 -0400
                Re: Style Police (a rant) "Cthun" <cthun_117@qmail.net.au> - 2011-09-12 08:46 -0400
                Re: Style Police (a rant) thoolen <th00len@th0lenbot.thorium> - 2011-09-12 21:03 -0400
              Re: Style Police (a rant) Tom Anderson <twic@urchin.earth.li> - 2011-09-12 20:18 +0100
            Re: Style Police (a rant) Wanja Gayk <brixomatic@yahoo.com> - 2011-09-11 21:20 +0200
              Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-09-11 13:52 -0700
          Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-12 00:17 +0000
      Re: Style Police (a rant) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-10 21:32 -0400
        Re: Style Police (a rant) Wanja Gayk <brixomatic@yahoo.com> - 2011-09-11 13:27 +0200
          Re: Style Police (a rant) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-11 11:05 -0400
        Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-11 13:23 +0000
          Re: Style Police (a rant) Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-09-11 10:04 -0400
            Re: Style Police (a rant) Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-11 12:45 -0300
              Re: Style Police (a rant) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-11 16:53 -0400
                Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-14 12:30 +0000
                Re: Style Police (a rant) Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-09-14 20:47 -0400
                Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-09-14 18:06 -0700
                Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-15 10:06 +0000
                Re: Style Police (a rant) blmblm@myrealbox.com <blmblm.myrealbox@gmail.com> - 2011-09-20 11:28 +0000
                Re: Style Police (a rant) Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-09-20 07:36 -0400
                Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-20 13:04 +0000
                Re: Style Police (a rant) Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-20 20:34 -0300
                Re: Style Police (a rant) Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-14 22:33 -0300
                Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-15 13:46 +0000
                Re: Style Police (a rant) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-14 21:40 -0400
          Re: Style Police (a rant) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-11 10:59 -0400
            Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-09-11 21:25 +0000
  Re: Style Police (a rant) Tom Anderson <twic@urchin.earth.li> - 2011-08-27 14:00 +0100
    Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-27 08:42 -0700
    Re: Style Police (a rant) Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-08-27 11:58 -0400
  Re: Style Police (a rant) "John B. Matthews" <nospam@nospam.invalid> - 2011-08-28 08:21 -0400
    Re: Style Police (a rant) Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-08-28 18:07 -0300
  Re: Style Police (a rant) Roedy Green <see_website@mindprod.com.invalid> - 2011-08-29 04:20 -0700
  Re: Style Police (a rant) Tim Slattery <Slattery_T@bls.gov> - 2011-08-29 09:11 -0400
    Re: Style Police (a rant) Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-08-29 20:50 -0400
      Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-30 11:27 +0000
        Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-30 09:36 -0700
          Re: Style Police (a rant) Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-30 17:51 +0000
      Re: Style Police (a rant) Tim Slattery <Slattery_T@bls.gov> - 2011-08-30 08:51 -0400
      Re: Style Police (a rant) Patricia Shanahan <pats@acm.org> - 2011-08-30 09:04 -0700
        Re: Style Police (a rant) Lew <lewbloch@gmail.com> - 2011-08-30 09:43 -0700
          Re: Style Police (a rant) Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-08-31 00:31 +0200

csiph-web