Fázové rozlišení - Phase distinction
Fázové rozlišení je vlastnost programovacích jazyků, které dodržují přísné rozdělení mezi typy a podmínky. Stručné pravidlo pro určení, zda je fázové rozlišení zachováno v jazyce, či nikoli, navrhl Luca Cardelli - Pokud A je termín kompilace a B je dílčí termín A, pak B musí být také termín kompilace. [1]
Většina staticky psaných jazyků odpovídá principu fázového rozlišení. Některé jazyky však mají obzvláště flexibilní a expresivní systémy (zejména závislé napsané programovací jazyky ) umožňují manipulaci s typy stejnými způsoby jako s běžnými termíny. Mohou být předány funkcím nebo vráceny jako výsledky.
Jazyk s fázovým rozlišením může mít samostatný jazyk jmenné prostory pro typy a proměnné běhu. V optimalizace kompilátoru „Fázové rozlišení označuje hranici mezi bezpečnými výrazy vymazat.
Teorie
Fázové rozlišení se používá ve spojení se statickou kontrolou.[2] Použitím systému založeného na kalkulu odstraňuje fázové rozlišení potřebu vynucovat lineární logiku mezi různými typy a podmínkami programování.[3]
Úvod
Fázové rozlišení rozlišuje mezi zpracováním prováděným v době kompilace a zpracováním prováděným za běhu.
Zvažte jednoduchý jazyk,[3] s podmínkami:
t :: = true | false | x | λx: T. t | t t | pokud t pak t else t
a typy:
T :: = Bool | T -> T
Všimněte si, jak jsou typy a výrazy odlišné. V době kompilace se typy používají k ověření platnosti podmínek. Typy však za běhu nehrají žádnou roli.
Reference
- ^ Cardelli, Luca (3. ledna 1988). "Fázové rozlišení v teorii typů" (PDF). Digital Equipment Corporation.
- ^ Cardelli, Luca (3. ledna 1988). "Fázové rozlišení v teorii typů" (PDF). Digital Equipment Corporation.
- ^ A b „CMSC 336: Type Systems for Programming Languages; Lecture 7: Curry-Howard Isomorphism & Derived Forms“ (PDF). 31. ledna 2008.