[Tim] >> Every suggestion here so far has satisfied that, if S is a non-empty set, >> >> assert next(iter(S)) is first(S) >> >> succeeds. That is, `first()` is _defined_ by reference to iteration >> order. It's "the first" in that order (hence the name).
[Stephen J. Turnbull <turnbull.stephen...@u.tsukuba.ac.jp>] > The problem I'm concerned with is that sometimes users' definitions of > words differ from a computer language's definitions of words. That's > why I used the word "natural", which doesn't really have much to do > with the way a computer language defines things, but frequently > features in human thought. > > Whether that potential difference matters here is an empirical > question. > > Theoretically, I can say "Explicit is better than implicit." > I.e., the call to 'iter' tells us exactly what order is being used. But hasn't it already been settled by experience? There is nothing unique about `first(set)` implicitly appealing to iteration order. A set passed as the iterable to _any_ itertools function does exactly the same: >>> import itertools >>> list(itertools.zip_longest(set("abcde"), range(5))) # can vary from run to >>> run [('a', 0), ('e', 1), ('c', 2), ('d', 3), ('b', 4)] >>> list(itertools.compress(set("abcde"), [1]*5)) # but is consistent within a >>> run ['a', 'e', 'c', 'd', 'b'] >>> list(itertools.takewhile(lambda x: True, set("abcde"))) ['a', 'e', 'c', 'd', 'b'] So do, e.g., some builtins: >>> list(map(ord, set("abcde"))) [97, 101, 99, 100, 98] >>> [ord(ch) for ch in set("abcde")] [97, 101, 99, 100, 98] > That's *my* opinion in this case, and I don't hold *you* to it just > because I'm quoting you. (I am amused, though.) I just don't see the potential for "new" bafflement if itertools.first works exactly the same way as itertools.anything_else _has_ worked, in this respect, all along. Give users some credit. Programming is baffling, period, at first. But to those who persist, nothing becomes truly unbearable ;-) _______________________________________________ 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/6RZJGZQBUGRA6NESDCFPAQEANF6FAA64/ Code of Conduct: http://python.org/psf/codeofconduct/