Promiň, ale jestli budeme za "funkcionální obrat" považovat všechno, co nám *nějak* (v tomhle případě jenom pořadím "objektů") připomíná něco z nějakého funkcionálního jazyka, tak to už jsme ten pojem definitivně vyprázdnili a pro mě osobně ztrácí smysl ho vůbec používat...
(nic ve zlým, to není kritika, jenom takový povzdech)
Myslím, že si nerozumíme. Funkcionální řešení problému je u mě takové, které říká, co je třeba s daným vstupem udělat, aby na výstupu vyšla určitá hodnota závislá pouze na vstupních parametrech a na ničem jiném. Rovněž nemá funkcionální kód žádné vedlejší efekty, prostě jenom transformuje podle daného předpisu určitý vstup na nějaký výstup. Řečeno ještě jinak, definujeme matematicky určitou transformační funkci. Ta funkce je černá skříňka a naprosto nic neříká o reprezentaci mezivýsledků, o časové posloupnosti, o pořadí vyhodnocování operandů, protože na pořadí jejich vyhodnocení vzhledem k výsledku nezáleží. Proto tvrdím, že když zavolám s.join(l), jde o funkcionální zápis, zatímco pokud vytvořím cyklus, který postupně skládá podřetězec a na konci k němu připojí poslední prvek seznamu, nejde už o funkcionální zápis. Šlo by o něj pouze v případě, že bychom byli natolik tolerantní, že nám bude jedno, že nám Python kód zcela přeuspořádá a podle svého uvážení bude připojovat prvky seznamu odzadu dopředu. Nevěřím, že by existovalo mnoho imperativních programátorů, kteří by to přežili bez klení.
Z tohoto pohledu je mi jedno, jestli daný jazyk podporuje funkce vyšších řádů, zda dokáže skládat funkce tak, že vynechá mechanismus volání rutin a předávání parametrů přes zásobník atd. Jasně, že chci, aby program běžel co nejoptimálněji a neměl zbytečnou režii. Nicméně je pro mě důležité, abych mohl program psát (alespoň na nejvyšší úrovni) tak, že specifikuji
co je třeba vypočítat a ne
jak to má program/počítač udělat. Nakolik mi v tom daný jazyk/interpret/knihovny/virtuální stroj pomáhají, to je důležité, ale rozhodnutí, zda budu program záměrně strukturovat tak, abych se co nejvíce izoloval od fyzické implementace a reprezentace dat, je pouze na mně. Funkcionální přístup vychází z programátora a ne z jazyka. Doufám, že jsem svůj postoj dostatečně vysvětlil.