Jonathan and all!

Thanks for picking up on this thread, I almost given up hope that anyone would be interested. Then it suddenly blew up :)!

Jonathan, your suggestion makes sense as a stop-gap measure for current Python, but I'm unclear on the way forward to the new syntax:

When you say we introduce a new syntax where:

>>> value = d[K(1, 2, 3, a=4, b=5)]
>>> d[K(1, 2, 3, a=4, b=5)] = value

becomes:

>>> value = d[1, 2, 3, a=4, b=5]
>>> d[1, 2, 3, a=4, b=5] = value

somehow the interpreter would need to know that the intent is to create an instance of 'K'. How is that association expressed? Or is the idea that - the same was as slices - there would be a predefined object within the language that is always the thing that gets created in these instances?

It appears to me that the current behavior is:

    d[32] becomes d.__getitem__(32)

    d[2,4,"boo"] becomes d.__getitem__( (2,4,"boo") )

    d[2:3:"boo"] becomes d.__getitem__( slice(2,3,"boo") )

So then maybe

    d[2,4,scare="boo"] could become d.__getitem__( {0:2, 1:4, "scare":"boo"} )?

That is of course quite a bit different from the args, kwargs syntax, but I don't think it's invalid as positional arguments would get an integer key while keyword arguments would get a string key.

With this change, of course your previous (current python) syntax would make K into a function as opposed to a class:

def K(*args, **kwargs):
    ret_val = {}
    for idx, value in enumerate(args):
        ret_val[idx] = value
    for key, value in kwargs.items():
        assert isinstance(key, str)
        ret_val[key] = value
    return ret_val

>>> value = d[K(1, 2, 3, a=4, b=5)]
>>> d[K(1, 2, 3, a=4, b=5)] = value

Thanks again,
Andras
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/V7P2CRWGIAUCDR7S7A4ZJV75Q7WCDRND/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to