On Mon, Oct 18, 2021 at 10:20:17AM -0000, Mathew Elman wrote:
despite a driving idea of python syntax being readability in english, the function signature is distinctly not english.
Python's syntax was not really modelled on English, as far as I can tell. It was (I think) modelled more on Pascal, Modula-2/3, C and most of all, ABC: https://www.artima.com/articles/the-making-of-python All of those languages (like most programming languages) use English keywords, but not English grammar. In Python's case, I think it is better to say that the language aims to read like executable pseudo-code, not English. If Guido is reading, he might like to step in and correct me, but as far as I know, the intent was never to make Python code read as English. There are languages that do that. The ultimate example of that is quite probably Inform7, a specialised game language that reads like this: Afterlife is a room. "Fluffy white clouds gather round you here in the afterlife." The Pearly Gates are a door in Afterlife. "The Pearly Gates - large, white, wrought-iron and splendidly monumental - stand above you." Heaven is a room. The Gates are above the Afterlife and below Heaven. Yes, that is actual source code, not documentation, taken from the Inform website. http://inform7.com/ Inform 7 is specialised for making text games, but a more general purpose English-like languague comes from the XTalk family of languages, starting with Apple's Hypertalk in the 1990s. In XTalk languages, we can write English-like statements like these: put the date into field "Today" get the second line of todo_list put prefix before the third word of it get the number of words of password if it < 10 then answer "Your password is too weak" add seven to the name of button id 21 put any word of field 1 after the middle word of field 2 Aside from mentioning that "field" here refers to editable text entry fields in the GUI, I probably don't have to explain what any of those lines do. I have a soft spot in my heart for Hypertalk and its GUI builder, Hypercard, so I completely understand your desire to write code with a more English-like syntax. If my memory is correct, in Hypertalk you could take any function of one argument and write it as either of these forms: function(argument) the function of argument So it is not a huge step to imagine a new syntax that looks like your example: insert 1 into container That's practically the same as Hypertalk's "put ... into ...". (Hypertalk also supported put...after and put...before.) So what you are asking for is certainly *possible*. But I do not think it is a good fit for Python's syntax. I love Hypertalk's syntax, but it does not fit well with Python's existing syntax. English-like code and Python code are both great, but a mix of the two in the same file would be like some sort of horrible surgical experiment gone wrong. https://imgur.com/dOWVRkn -- Steve