
Hi all, I've been working in q and k, which is where this idea comes from. My idea is to make lists and dicts callable, with __call__ = __getitem__. So that: [3,4,5](1) gives 4 {'a':1, 'b': 2}('b') gives 2 Arguably a list is a function which maps from range(len(list)) to the list entries, and a dictionary is a function that maps from keys to values. This would mean that functions designed to take functions, can be repurposed to take data, for example: map(lst, idxs) instead of (lst[i] for i in idxs) or map(lambda x: lst[x], idxs) map(dct, lst) instead of (dct[l] for l in lst) sorted(range(len(lst)), key=lst) to calculate the equivalent of np.argsort max(range(len(lst)), key=lst) to calculate the equivalent of np.argmax I couldn't find this being discussed before. Does anyone like it? There is room for confusion as it would mean that e.g. filter([1,2], [0,1]) would give [0,1] whilst [1] might be expected. Best, George Harding p.s. Thank you to everyone for their work on such a wonderful language.