Glasgow Haskell Compiler: Porovnání verzí

Smazaný obsah Přidaný obsah
Luckas-bot (diskuse | příspěvky)
m r2.5.2) (robot přidal: sv:Glasgow Haskell Compiler
m oprava chyby
Řádek 22:
Podle zvyklosti z tradiční typově orientované kompilace se následně spouští zjednodušovač kódu GHC, neboli "[[middle end]]", který provádí většinu [[Optimalizace (informatika)|optimalizací]] implementovaných v GHC. Ty jsou strukturovány jako posloupnost úprav aplikovaných na [[zdrojový kód]] při úpravách jádra. Analáza a úpravy spouštěné v této fázi zahrnují [[demand analysis|požadavkovou analýzu]] (zobecněnou analýzu striktnosti), aplikaci uživatelsky definovaných pravidel [[rewrite rules]] (což zahrnuje soubor pravidel včetně standardních knihoven GHC, které vykonávají foldr/build [[Deforestation|fusion]]), [[unfolding]] (rozbalování – zahrnuje v tradičních překladačích tzv. "[[inlining]]"), [[let-floating]] – analýzu, jež rozhoduje, které funkční argumenty mohou být rozbaleny, [[constructed product result analysis|analýza CPR]], [[Partial evaluation|specializace]] [[Type class|přetížených]] funkcí, stejně jako soubor jednodušších místních úprav jako jsou [[constant folding]] a [[beta reduction|beta redukce]].
 
Závěrečná úroveň se sestává ze zjednodušovacích úprav jádra do [[STG (Spineless Tagless G-machine)]] (nižšího zprostředkovaného jazyka). Stejně jako jádro je i samo STG funkcionálním jazykem. STG je ekvivalentem [[teoretický model počítače|teoretického modelu počítače]] (stejně jako například [[Turingův stroj]] či [[RAM stroj|model RAM]]). [[Back end]] GHC provádí úpravy STG před překladem do C, C-- nebo [[strojový kód|strojového kódu]].
 
== Jazyk ==