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

  1. ^ Cardelli, Luca (3. ledna 1988). "Fázové rozlišení v teorii typů" (PDF). Digital Equipment Corporation.
  2. ^ Cardelli, Luca (3. ledna 1988). "Fázové rozlišení v teorii typů" (PDF). Digital Equipment Corporation.
  3. ^ A b „CMSC 336: Type Systems for Programming Languages; Lecture 7: Curry-Howard Isomorphism & Derived Forms“ (PDF). 31. ledna 2008.