Zadaný počet lambda - Typed lambda calculus

A napsaný lambda kalkul je napsaný formalismus který používá symbol lambda () k označení abstrakce anonymní funkce. V této souvislosti jsou typy obvykle objekty syntaktické povahy, které jsou přiřazeny termínům lambda; přesná povaha typu závisí na uvažovaném počtu (viz druhy níže). Z určitého hlediska lze zadané lambda kameny považovat za upřesnění netypový lambda kalkul, ale z jiného hlediska je lze také považovat za fundamentálnější teorii a netypový lambda kalkul speciální pouzdro pouze s jedním typem.

Zadané lambda kameny jsou základní programovací jazyky a jsou základem napsaných funkční programovací jazyky jako ML a Haskell a, nepřímo, napsané imperativní programovací jazyky. Zadané lambda kameny hrají důležitou roli při navrhování systémy typu pro programovací jazyky; zde typovatelnost obvykle zachycuje žádoucí vlastnosti programu (např. program nezpůsobí narušení přístupu do paměti).

Zadané lambda kameny úzce souvisí matematická logika a teorie důkazů přes Curry – Howardův izomorfismus a lze je považovat za interní jazyk tříd Kategorie; např jednoduše zadaný lambda kalkul je jazyk Kartézské uzavřené kategorie (CCC).

Druhy zadaných lambda kalkulů

Byly studovány různé zadané lambda kameny. The jednoduše zadaný lambda kalkul má jen jednu konstruktor typu, Šíp a jeho jediné typy jsou základní typy a typy funkcí . Systém T rozšiřuje jednoduše zadaný lambda kalkul o typ přirozených čísel a primitivní rekurze vyššího řádu; v tomto systému jsou všechny funkce prokazatelně rekurzivní Peano aritmetika jsou definovatelné. Systém F umožňuje polymorfismus pomocí univerzální kvantifikace u všech typů; z logického hlediska může popsat všechny funkce, které jsou prokazatelně úplné logika druhého řádu. Lambda kameny s závislé typy jsou základnou intuicionistická teorie typů, počet konstrukcí a logický rámec (LF), čistý lambda kalkul se závislými typy. Na základě práce Berardi dne systémy čistého typu, Henk Barendregt navrhl Lambda kostka systematizovat vztahy čistě zadaných lambda kalkulů (včetně jednoduše zadaného lambda kalkulu, systému F, LF a počtu konstrukcí).[Citace je zapotřebí ]

Některé zadané lambda kameny zavádějí pojem podtypování, tj. pokud je podtyp , pak všechny výrazy typu mít také typ . Zadaný lambda kalkul s podtypem jsou jednoduše zadaný lambda kalkul s konjunktivními typy a Systém F<:.

Všechny dosud zmíněné systémy, s výjimkou netypového lambda kalkulu, jsou silně normalizující: všechny výpočty jsou ukončeny. Proto nemohou popsat vše Turingovo počítatelné funkce.[1] Jako další důsledek jsou konzistentní jako logika, tj. Existují neobydlené typy. Existují však zadané lambda kameny, které nejsou silně normalizující. Například závislý typ lambda kalkul s typem všech typů (Type: Type) se normalizuje kvůli Girardův paradox. Tento systém je také nejjednodušším systémem čistého typu, formalismem, který zobecňuje Lambda kostku. Systémy s explicitními kombinátory rekurze, jako např Plotkinova "Programovací jazyk pro vypočítatelné funkce „(PCF), nejsou normalizační, ale nemají být interpretovány jako logika. PCF je skutečně prototypový, typizovaný funkční programovací jazyk, kde se používají typy zajišťující dobré chování programů, ale nemusí to nutně znamenat, že končí.

Aplikace v programovacích jazycích

v programování, rutiny (funkce, postupy, metody) silně napsané programovací jazyky úzce odpovídají zadaným výrazům lambda.

Viz také

  • Kappa kalkul —Analóg typovaného lambda kalkulu, který vylučuje funkce vyššího řádu

Poznámky

  1. ^ od zastavení problému protože se ukázalo, že druhá třída je nerozhodnutelný

Další čtení

  • Barendregt, Henk (1992). "Lambda kalkul s typy". V Abramsky, S. (ed.). Pozadí: Výpočetní struktury. Příručka logiky v informatice. 2. Oxford University Press. 117–309. ISBN  9780198537618.