Rezumat: Cursul se referă la elementele de bază de calcul lambda. Această teorie face posibilă pentru a înțelege mai bine proprietățile agenților și utilizarea acestora. Prelegere discutat în detaliu problemele legate de funcțiile de transformare, redenumirea substituție variabile. Noi studiem două operații de bază aplicabile expresii lambda, - reducerea beta-și alfa-conversie. Relația dintre teorie și practică în programarea Eiffel și alte limbaje de programare.
Lambda calcul
Am învățat deja elementele de bază ale agenților și chiar unele detalii. Sper că vă simțiți puterea acestui mecanism și posibilele domenii de aplicare.
De fapt, este posibil următorul nivel de flexibilitate. Înainte de stăpânul său, ar trebui să fie luate în considerare idei matematice care stau la baza. Lambda calcul ne va oferi o mai bună înțelegere a agenților, în special, conceptul de operanzi deschise și închise.
Această teorie remarcabil dezvoltat în 1930, înainte de apariția calculatoarelor. 30 de ani mai târziu, sa descoperit că oferă o bază clară și solidă pentru multe dintre conceptele de limbaje de programare. Acest lucru a reînviat interesul în calculul lambda. și a devenit un domeniu fructuos de cercetare.
Lambda calcul ne oferă o teorie a conceptului de funcții. Se ocupa cu elementele de bază ale conceptelor fără a studia tipuri speciale de funcții, cum ar fi funcții sau funcții ale variabilelor reale trigonometrice. Aici studiem ideea unei funcții ca un mecanism care are argumente și generează un rezultat. Acesta este un concept matematic, dar este foarte similar cu conceptul de program în informatică. Teoria ne permite să înțelegem mai bine ce este domeniul unei variabile, ceea ce este rolul argumentelor, precum și posibilitatea de a lua în considerare programul ca un obiect. răspunzând la obiectivele acestui curs - converti agenți de program.
funcţii manipulând
Ideea de bază este simplu: notație și reguli de transformare ne permite să se ocupe funcții în același mod ca și cu alte obiecte matematice.
Date fiind două numere întregi a și b pot forma combinații diferite, de exemplu: a + b sau sin (a) + cos (b). Utilizarea funcțiilor cu semnătură bine definite.
Este posibil să se „joace“ în aceste jocuri nu cu numere, dar cu funcțiile? Chiar și în operațiunea elementară ne întâlnim operațiile asupra funcțiilor. Dacă f & g - această funcție cu semnăturile corespunzătoare, puteți specifica compoziția lor, sunt scrise ca g O f sau f; g (notația pe care o vom folosi, deoarece arată în mod clar ordinul de execuție). Rezultatul este o funcție de compoziție h (x), astfel încât h (x) = g (f (x)) pentru orice argument x aplicabil. Compoziția este aceeași ca operarea funcțiilor, cum ar fi „+“ pe numere.
Lambda calcul ne permite determinarea funcțiilor de mai multe operații.
Putem continua urca pe scara de abstractizare. Compoziția Funcția este o funcție, deci este compoziția aplicabilă. Să X. Y. Z - unele seturi și set de semnături ale funcțiilor f și g:
Compoziția acestor funcții, funcția de mai sus h. are semnătură X → Z. acum defini compoziția „;“ ca o funcție care are două argumente f și g și h, care generează un rezultat. Această funcție are semnătura:
Putem continua să identifice funcții care operează pe funcții care, la rândul lor, să opereze funcțiile, și așa mai departe. Lambda calcul ne dă de vocabular și reguli - teorie - pentru a face cu astfel de funcții la un nivel arbitrar.
Lambda Expresiile
În primul rând, avem nevoie de o notație simplă pentru definirea funcțiilor. Presupunem că avem baza funcțiilor, cum ar fi „+“ pe ansamblu și reale. Această presupunere este făcută pentru simplitate, deoarece calculul lambda poate fi determinată fără a face referire la teoria matematică existente. Simbolul va fi, ca de obicei, să însemne „prin definiție“. Definim pătrat funcție cu semnătură
Funcția ca rezultat returnează pătratul numărului. definiția ei a expresiei lambda relevantă poate fi setat: