takový čitelnější Lisp
Jak v čem. :-) To, že zdrojový kód je datová struktura syntaktického stromu může podle situace být výhoda i nevýhoda. Na Lua se mi líbí, že to je vlastně takové Scheme s méně závorkami (a tudíž s ním člověk zažene na útěk méně lidí). :-)
Spíš nechápu, jak někdo může kritizovat absenci += (což je skutečně vyšším jazyku vyložená prkotina) a naopak si nepovšinout třeba plné podpory tail callů, což mi přijde jako docela bonus (stavové automaty přímočaře a podobně). Když chybí to první, je to prakticky úkol pro find-and-replace v textovém editoru. Přepsat kód počítající s dostupností tail callů do jazyka, který je nepodporuje, je podle mě mnohem větší otrava.
To snad záleží na sémantice operátoru, datovém modelu jazyka a konkrétních datových typech, ne? Kupříkladu u immediate hodnot (třeba tagovaných) žádné "vytvoření kopie instance" ani nepřichází v úvahu. (Jak byste chtěl třeba změnit hodnotu (abstraktního) celého čísla?)
A Lua (naštěstí) není C++. BTW, třeba Ruby ani nepovoluje definovat operaci x+=y tak, aby měla jinou sémantiku, než x=x+y. A taky mi to přijde jako docela dobrý nápad. Umím si živě představit, jaké bugy by se pak začaly vyskytovat.
Překladač by to sice v případě, že dochází k zapisování do té samé proměnné, mohl reflektovat, ale to mi nepřijde moc košer.Tak to je asi nejstrašidelnější myšlenka dne. :)