Glasgow Haskell Compiler: Porovnání verzí

Smazaný obsah Přidaný obsah
TXiKiBoT (diskuse | příspěvky)
Odkaz [System F] Ukazoval na nejakyho trance DJ, bo co..
Řádek 18:
GHC je napsáno v Haskellu (technikou [[strojové učení|strojového učení]]), ale [[runtime]] systém Haskellu, základní prvek kompilátoru, je napsán v [[The C Programming Language|programovacím jazyce C]] a zprostředkovaném jazyce [[C-- (intermediate language)|C--]]. Většina kódu GHC je napsána pomocí [[literate programming|písmenného programování]].
 
[[Front end]] GHC zahrnující [[Lexikální analýza|lexikální analýzu]], [[Syntaktická analýza|syntaktickou analýzu]] a kontrolu [[Datový typ|datových typů]] je navržen pro zachování co nejvyššího množství informace o zdrojovém kódu až do dokončení procesu [[type inference]] s důrazem na poskytování jasných výpisů chybových stavů uživateli. V poslední fázi front endu se provádí [[Syntactic sugar|desugar]], který Haskell převede do písmenného [[zprostředkovaný jazyk|zprostředkovaného jazyka]] známého jako "Core" (jádro) (založeného na [[System F (Informatika)|systému F]], rozšířeného o výrazy <code>let</code> and <code>case</code>. Časem se jádro rozšířilo o podporu obecných algebraických datových typů, je postaveno na rozšíření systému F a stává se z něj systém nazvaný System FC.
 
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í – v tradičních překladačích nazvané "[[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|nadhodnocených]] funkcí, stejně jako soubor jednodušších místních úprav jako jsou [[constant folding]] a [[beta reduction|beta redukce]].