Pymacs - tuples/lists .vs. proper-lists/vectors

Brian McErlean brianmce at crosswinds.net
Mon Sep 17 05:26:23 EDT 2001


pinard at iro.umontreal.ca (=?iso-8859-1?q?Fran=E7ois?= Pinard) wrote in message news:<mailman.1000689320.30408.python-list at python.org>...
> Hi, Pythonres and Pythonras.
> 
> Someone is suggesting that the choice of translating:
> 
>      Python      to      Emacs LISP
> 
>      tuples      ->      proper lists
>      lists       ->      vectors
> 
> might not be ideal, and suggests that I change that to:
> 
>      Python      to      Emacs LISP
> 
>      tuples      ->      vectors
>      lists       ->      proper lists
> 
> instead.  He argues that Python lists are more easy to shrink and expand
> than Python tuples, which well parallels Emacs LISP proper lists being
> also more flexible than Emacs LISP vectors.

I disagree, though given that I did the same thing, maybe I'm just 
defending my own mistakes.  On the surface, python lists seem a bit 
closer  to lisp lists, though they are very different in other ways 
(eg O(N) access)  I think it is more useful to look at how they are used.

The way I use lisp lists/tuples, and vectors/python lists is very
similar:

Tuples / Lisp lists:
    Used to group small amounts of heterogenous data. 
    Usually 2-10 elements.  Rarely used for large structures
    Access time not too important, due to small number of elements.

Python lists / Lisp Vectors:
    Can contain large amounts of (usually) heterogenous elements.
    Potentially thousands of elements.
    O(1) access time important, since there are many elements.

While there are patterns I use in python with lists that rely on extending, 
eg. building lists like:

l=[]
while cond:
	<do stuff to get next element>
	l.append(next_element)

I wouldn't use a similar pattern in lisp with either lists or tuples,
so I don't think this is an issue.

I've seen posts here that use tuples/lists in a similar way in python at least,
so its probably worth finding out what more people do in lisp before making a 
decision.

> This might be debated to death, of course.  My reasons for the current
> choice are rather weak.  Maybe I corresponded round parentheses to round
> parentheses, and square ones to square ones.  This is surely easier to
> remember, but maybe not as natural as I would have expected it to be.
> So far, I see myself writing `return tuple(result)' a bit too often...

Don't underestimate the benefit of similar syntax too.
I think it is a useful reminder.

> Pymacs is young enough to afford the change suggested above, so I think I'm
> going to dive and do it right now.  Yet, remains in the back of me a bit
> of doubt.  Please tell me if I am goofing big by accepting the above change!

I think it might be better as it is, but its entirely possible that 
I'm just weird in this respect.  

-- 
Brian McErlean



More information about the Python-list mailing list