Por que a adição da lista do Python deve ser homogênea?

Alguém familiarizado com os componentes internos do Python (CPython ou outras implementações) explica porque é necessário que a adição de lista seja homogênea:

In [1]: x = [1]

In [2]: x+"foo"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
C:\Users\Marcin\<ipython-input-2-94cd84126ddc> in <module>()
----> 1 x+"foo"

TypeError: can only concatenate list (not "str") to list

In [3]: x+="foo"

In [4]: x
Out[4]: [1, 'f', 'o', 'o']

Por que não deveriax+"foo" acima, retorne o mesmo valor que o valor final dex na transcrição acima?

Esta questão segue a questão da NPE aqui:O comportamento da lista do Python é + iterável documentado em algum lugar?

Atualização: Eu sei que não é necessário que heterogêneo+= trabalho (mas o faz) e, da mesma forma, não é necessário que+ seja um erro. Esta questão é sobre por que essa última escolha foi feita.

É demais dizer que os resultados da adição de uma sequência a uma lista são incertos. Se isso fosse uma objeção suficiente, faria sentido evitar a heterogeneidade+=. Update2: Em particular, python sempre delega chamadas de operadores ao operando da esquerda, então nenhum problema "o que é a coisa certa a se fazer" surge ": o objeto da mão esquerda sempre governa (a menos que ele delegue à direita).

Update3: Para qualquer um que argumente que esta é uma decisão de design, por favor explique (a) por que ela não está documentada; ou (b) onde está documentado.

Update4: "o que deveria[1] + (2, ) return? "Deve retornar um valor de resultado igual ao valor de uma variávelx inicialmente segurando[1] imediatamente depoisx+=(2, ). Este resultado é bem definido.

questionAnswers(4)

yourAnswerToTheQuestion