Funkcionální programování: Porovnání verzí

Smazaný obsah Přidaný obsah
Oprava 4 na č
Magach (diskuse | příspěvky)
m Doplnění rozdělení jazyků o jazyk F#.
Řádek 6:
V praxi je rozdíl mezi matematickou funkcí a představou funkce použité v [[Imperativní programování|imperativním programování]]. [[Turingův_stroj#Subrutiny|Imperativní funkce]] mohou mít [[Vedlejší účinek|vedlejší účinky]], které mění stav programu. Z toho důvodu postrádají [[referenční transparentnost]]: Stejné volání může vést k různým návratovým hodnotám v závislosti na stavu vykonávaného programu. Oproti tomu ve funkcionálním kódu návratové hodnoty funkcí záleží pouze na argumentech funkce, a tudíž dvě volání téže funkce se stejnými argumenty vrací vždy stejnou hodnotu. Eliminace vedlejších účinků může zjednodušit analýzu a pochopení chodu programu, což je jednou z klíčových motivací pro vývoj funkčního programování.
 
V praxi se můžeme setkat jak s [[Čistě funkcionální|čistě funkcionálními]] jazyky, které striktně vycházejí z teorie (např. FP, Haskell, Miranda, Hope), tak i s hybridními jazyky, které mohou obsahovat i prvky, které jsou v rozporu se základními principy funkcionálního programování. Například často citovaný „typicky“ funkcionální jazyk [[Lisp]] je ve skutečnosti jazykem hybridním, neboť umožňuje modifikovat hodnoty již definovaných proměnných. Mezi hybridní jazyky patří rovněž jazykjazyky Standard ML, a[[Scheme]], jazykči [[SchemeF Sharp|F#]]. Dále lze funkcionální jazyky dělit dle [[Typová kontrola|typové kontroly]] na ''typované'' ([[Haskell (programovací jazyk)|Haskell]], [[F Sharp|F#]], [[Scala (programovací jazyk)|Scala]], [[OCaml]]) a ''netypované'' ([[Lisp]], [[Scheme]]).
 
== Použití ==