Next: Wyprowadzanie typów Up: Autoreferat pracy doktorskiej pt. Previous: Rachunek
Zastosowania rachunku
Rachunek
Szczególną rolę w zastosowaniach grają rachunki
z typami
będące w ścisłym związku z pierwotnym -- beztypowym rachunkiem
lambda. Języki programowania wywodzące się z ML-a (SML, Caml, Haskell,
Miranda i inne) oparte są właśnie na pewnym rachunku
z
typami. Rachunek ten posiada istotną cechę zwaną polimorfizmem.
Polimorfizm odznacza się możliwością deklarowania operacji, które
potem mogą być wykonywane dla wielu typów danych. Klasycznym
przykładem tego typu operacji jest operacja wykonania odwzorowania na
wszystkich elementach listy i utworzenia drugiej listy wyników
wykonania tej operacji. W klasycznych językach programowania takich
jak Pascal czy C operacja taka wymagałaby oddzielnej procedury dla
list liczb naturalnych i oddzielnej dla liczb rzeczywistych. W
językach korzystających z dobrodziejstw polimorfizmu dla wszystkich
typów, w tym dla liczb naturalnych i rzeczywistych, pisze się jeden
taki operator.
Podobnie wymienione systemy dowodzenia twierdzeń LEGO, Coq, Alf są
oparte na różnych, bardzo silnych rachunkach
z typami.
Rachunki te działają na zasadzie izomorfizmu Curry'ego-Howarda,
który mówi, że dla danej logiki intuicjonistycznej mamy do dyspozycji
odpowiedni rachunek
z typami, taki że dowody w tej logice
(przedstawionej w systemie naturalnej dedukcji) są we wzajemnie
jednoznacznej odpowiedniości z termami owego rachunku
. W
związku z tym o formule można myśleć jak o typie, a o budowaniu dowodu
-- jak o budowaniu
-termu mającego ten typ.
Next: Wyprowadzanie typów Up: Autoreferat pracy doktorskiej pt. Previous: Rachunek Aleksy Schubert 2001-03-15

