Barry Warsaw wrote:
> To be fair, I think Ruby stole the idea and syntax from Lisp. It's an
> interesting idea, but I'd like to understand exactly what you mean by "a
> Python symbol". Can you give more detail about your idea, perhaps as a
> pseudo-PEP?
I think it's as simple as the the LISP symbols, except when it comes
to name binding. What the OP apparently wants is this:
class Symbol(object):
def __init__(self, str):
self.name = name
symbols = {}
def make_symbol(str):
try:
return symbols[str]
except KeyError:
symbols[str] = result = Symbol(str)
In addition, he wants literals for the symbol type, namely
:[A-Za-z_][A-Za-z0-9_]
As you can put them into source code, you also need support
for marshalling them.
That's about all that he has specified so far. Open issues
then are:
- does .name include the colon or not?
- can you pass them to getattr, instead of strings?
Everything else follows from this spec (I hope). Symbols
compare for identity, are hashable, meant to be immutable
(Bug: the specification allows for mutation; the implementation
shouldn't).
Regards,
Martin
_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe:
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com