Můžete mi uvést příklad nejaké funkce ve Scheme se side-effectem co by v čistém jazyce nešlo, nešlo realizovat?
Nie je to, ze by to neslo, ale "cisty" jazyk to ma oddelene - ako napr. Haskell do monad.
Priklad takej operacie je citanie zo vstupu alebo zapis na vystup.
Pokud bych v C programoval tak, že si napíšu knihovnu funkcí, které pak v programu jen volám a předávám jim hodnoty, jde o funkcionální programování?
Funkcionalne je podla mna hlavne o tom, ze raz napisem a pouzivam stale. Okrem toho je "zvyk" vo funkcionalnych jazykoch nepouzivat napriklad cykly, aj ked cyklus ide implementovat aj vo funkcionalnom jazyku, ale su na to jednoducho lepsie nastroje.
Dovody pre mensiu bezpecnost je napriklad jednoduchsi zapis a jednoduchsie pochopenie zaciatocnikov.
Z mojho pohladu je C odlisne hlavne tym, ako v tom ludia pisu a na co je to primarne postavene. Nikto nikomu nebrani programovat v C objektovo alebo funkcionalne. Objektove programovanie by vyzadovalo vela robenia s pointermi, co sa urcite nikomu nechce, ked su jazyky, co to obstaraju "same".
Funkcionalne programovanie v C by vyzadovalo napriklad specialny typ zakladnych struktur ako su polia uz len kvoli dlzke (=nezdielatelny kod s kamosmi atd) a tiez vela predavani pointerov do funkcii. Cast by automaticky riesili templates ako v C++, cast dalsich problemov s uvolnovanim pamati by mozno riesil shared_ptr z C++, ale toto vsetko ide robit aj mechanicky. Najhorsie na tom je, ze keby to clovek robil rucne, tak by sa z toho asi zblaznil alebo by to padalo kvoli chybam, ktore vo funkcionalnych jazykoch ani nemozu nastat. V principe by to ale asi islo.