Lambdakalkyle

Lambdakalkyle (også Lambda-kalkyle eller Lambda kalkyle) er et formelt system indenfor den matematiske logik. Systemet giver en formelnotation for definition a

Lambdakalkyle

Lambdakalkyle (også Lambda-kalkyle eller Lambda kalkyle) er et formelt system indenfor den matematiske logik. Systemet giver en formelnotation for definition af funktioner udtrykt ved et antal ubundne variable. Systemet og den tilhørende notation blev oprindelig opfundet af den amerikanske matematiker Alonzo Church i 1930'erne som et værktøj i studiet af matematikkens fundament. Systemet kan imidlertid også opfattes som en fundamental notation for computerprogrammering og mødes derfor også indenfor datalogien. En række programmeringssprog kaldet funktionssprog implementerer forskellige maskinelle fortolkninger af lambdakalkylen, f.eks. LISP, men disse har indtil midt i 00'erne primært været af teoretisk interesse. I dag er anonyme funktioner dog almindeligt brugt i mainstream sprog som C# og JavaScript.

Notation

Systemet betegnes "lambda" kalkyle fordi man benytter det græske bogstav Lambda til at denotere den ubundne variabel i et udtryk. F.eks. betegner λx.x+1 den funktion der lægger et til et tal. Dette skal sammenlignes med den "normale" matematiske notation f(x)=x+1 der betegner den samme funktion, men hvor man samtidig tildeler funktionen navnet "f". Herved adskiller tænkemåden i "normal" matematik sig fra den matematiske logik, hvor man i den "normale" matematik netop vælger bogstavet f, det første bogstav i ordet funktion, for at antyde at navnet er uden betydning.

I et (fiktivt) programmeringssprog, det der kaldes pseudokode, kunne man f.eks. skrive

function f(x integer)
begin
 return x+1
end

Men her har navnet betydning. I næsten samtlige nuværende "mainstream" programmeringssprog er det muligt at give en funktion som parameter til en anden funktion, men i de sprog hvor man ikke kan angive anonyme funktioner er det ikke muligt at angive en funktionsparameter direkte, men man må erklære den først og så angive navnet som parameteren. I sprog der tillader anonyme funktioner kan man derimod angive funktionen direkte som parameter, hvilket i nogen tilfælde giver programkode der er nemmere at læse (udover læselighed er det også andre årsager til at anonyme funktioner kan være ønskelige).

Leksikalsk parsning

I den matematiske logik beskæftiger man sig bl.a. med hvor få antagelser man kan nøjes med for at kunne påbegynde matematisk argumentation. En problemstilling her er forståelsen af matematiske udtryk, f.eks. hvis man skriver en tekststreng x+1, hvordan kan man så med sikkerhed udpege at x er den ubundne variabel der kan erstattes med "noget andet" mens + og 1 har givne betydninger. Her er det i udtrykket f(x)=x+1 klart at det er teksten mellem ( og ) der angiver den ubundne variabel, mens det i λx.x+1 er teksten mellem λ og .

I den almindelige matematiske notation må man for at påtrykke funktionen imidlertid bruge 2 skridt og skrive

f(x)=x+1
f(7)

for at få svaret 8.

I lambdakalkylen kan man imidlertid nøjes med et skridt og skrive

(λx.x+1)(7)

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.