Protože if je činnost, nikoliv funkce. Chápete-li ji funkcionálně, tedy jako přiřazení, je to přiřazení příliš široce definované. Předem nevíte s čím budete pracovat, její definice je příliš široká a univerzální. Tím se ztrácí výhoda FP programování.
Wut? Neni to jen ekvivalent toho, ze muzu v Jave vracet vysledek typu Object? Snad jak moc obecny vysledek vratim je na programatorovi (a je uplne jedno, jestli to vratim z konstrukce if nebo funkce ci metody).
Ano, ale to je imperativní programování, díky neznámým závislostem mezi objekty nelze automatizovaně výpočet paralelizovat a dokazovat, což FP by mělo umožňovat. Ten if je samozřejmě extrém, ale na něm se ukáže, zda myslíte funkcionálně, či imperativně. Funkcionální programování vyžaduje oprostit se od pojmu čas, a tedy vás to osvobodí do jisté míry, od nutnosti zabývat se pořadím zpracování, výsledek matematické funkce závisí jen na vstupních hodnotách, nikoliv na pořadí zpracování funkcí ...