Funkcionální programování: Porovnání verzí
Smazaný obsah Přidaný obsah
m →Striktní, nestriktní a líné vyhodnocení: "býk" na "být" |
→Striktní, nestriktní a líné vyhodnocení:
opraven překlep a "efektnější -> efektivnější" značka: editace z Vizuálního editoru |
||
Řádek 90:
V prvním případě se jedná o striktní výpočet, argumenty funkce jsou vyhodnoceny před voláním funkce; vedle toho druhý případ je příklad nestriktního vyhodnocení, kde jsou argumenty přenechány ve funkci nevyhodnocené a volání funkce určuje kdy budou argumenty vyhodnoceny.
Striktní vyhodnocení je
Nicméně jsou tu důvody preferovat nestriktní výpočet. Lambda kalkul poskytuje silnější teoretické základy pro jazyky, které používají nestriktní výpočet. Nestriktní výpočet používají nejvíce definiční jazyky. Například podporuje nekonečné datové struktury jako seznam všech kladných proměnných typu integer nebo všech prvočísel. S nestriktním výpočtem jsou tyto struktury vypočítány pouze v kontextu, kde je vyžadována konečná délka. To vedlo k vývoji líného výpočtu, což je typ nestriktního výpočtu, kde výsledek počátečního výpočtu kteréhokoliv argumentu může být sdílen přes výpočtovou sekvenci. Ve výsledku není argument spočítán nikdy více než jednou. Líný výpočet je používán hlavně línými moderními [[Čistě funkcionální|čistě funkcionálními]] jazyky jako je [[Miranda (programovací jazyk)|Miranda]], [[Clean]] a [[Haskell (programovací jazyk)|Haskell]].
|