2IT – PVY – objektové DBS Bc. Jiří Šilhán Lambda-kalkul 2IT – PVY – objektové DBS Bc. Jiří Šilhán
Lambda-kalkul Jde o prostředek, kterým lze úplně popsat, jak má počítač úplně pracovat Každý dnes používaný programovací jazyk souvisí s lambda-kalkulem – Smalltalk Lambda-kalkul slouží k tomu, abychom mohli formule a manipulace aplikovat stejným způsobem, jako se v matematice standardně pracuje s obyčejným matematickým a logickým zápisem, a to včetně běžných operací, jako je např. dosazování, vytýkání před závorku apod.
Lambda-kalkul (λ x | x 10) Lambda výraz se skládá ze dvou částí oddělených znakem | První část lambda výrazu se nazývá hlavička, ve které je seznam proměnných uvozených řeckým písmenem λ Tyto proměnné se jmenují lambda proměnné Když na nějaký λ výraz aplikujeme nějaké hodnoty, tak se na takovéto λ-proměnné tyto hodnoty navazují
Lambda-kalkul (λ x | x.10) Druhá část lambda výrazu je tzv. tělo, ve kterém se nachází vlastní formule Tato část lambda zápisu se chová stejně jako běžný matematický zápis
Lambda-kalkul (λ x | x.10) <: 5 /hodnotu 5 aplikujeme na λ proměnnou/ (λ x=5 | x.10) /došlo k redukci celého výrazu na pravou část, protože hodnota proměnné byla dosazena příslušné místo na pravé straně/ 5.10 50
Lambda-kalkul α konverze – změna názvu proměnných pokud v lambda výrazu přejmenujeme proměnné v levé i pravé části tak se daný lambda výraz nemění β redukce – výměna lambda proměnných v pravé části výrazu za konkrétní hodnoty – po aplikaci λ funkce je operace s názvem β redukce
Lambda-kalkul - α konverze (λ x | x.8) <: (λ x λ y | 2x+y) => => (λ x= (λ x λ y | 2x+y) | x.8)=> => dále nelze musíme výraz upravit > α konverze => (λ z | z.8) <: (λ x λ y | 2x+y) => => (λ z= (λ x λ y | 2x+y) | z.8) => =>((λ x λ y | 2x+y) . 8)
Lambda-kalkul – další příklady ((λ a λ b | 2a + b) . 6) <: (2;3) => => ((λ a = 2 λ b = 3 | 2a + b) . 6) => (2.2+3).6 42