lambda calculus

 

Hoe moet e-mail: (λx.jwkxcs.vu.nl)@ gelezen worden? Met lambda calculus (λ-calculus).


De λ-calculus is de eenvoudigste programmeertaal die bestaat - de ‘oerprogrammeertaal’. De woorden in die taal heten λ-termen. Die worden successievelijk getransformeerd totdat een λ-term ontstaat die een ‘antwoord’ voorstelt. Eén enkele regel of voorschrift, volstaat om deze transformaties uit te voeren, de beta-regel (β-regel). Het wonder van de λ-calculus is dat die β-regel zo simpel is, en dat er toch elke berekening of symboolmanipulatie, hoe ingewikkeld ook, mee kan worden uitgevoerd. In de λ-calculus wordt het begrip ‘berekenen’ of ‘manipuleren met symbolen’, met informatie, tot de kleinst denkbare bestanddelen teruggebracht. De werking van deze magische regel bestaat eenvoudig uit het invullen van een woord in een tweede woord op de daarvoor aangegeven plaatsen. In de volgende voorbeelden kleuren we het woord dat wordt ingevuld rood, en het woord waarin wordt ingevuld, blauw. De plaatsen waar wordt ingevuld zijn zwarte letters (officieel variabelen), en  de variabele waarvoor moet worden ingevuld staat achter de λ.


Bijvoorbeeld. Vul voor elke letter z in het woord ziezo het woord aap in.

Het resultaat is dan aapieaapo. Deze herschrijfstap of β-reductiestap wordt in wiskundige notatie zo opgeschreven:


        (λz. ziezo) aap aapieaapo


Een ander voorbeeld van een herschrijfstap is


        (λa. aap) ziezo ziezoziezop


In de taal van logica en wiskunde mogen woorden ook haakjes bevatten:

‘(‘ en ‘)’. Behalve deze symbolen wordt ook nog de punt ‘.’ gebruikt, zoals ook in de voorbeelden boven. We laten de kleuren verder weg.


Een woord (officieel, een λ-term) kan ook uit een enkele letter bestaan. Dus we hebben ook bijvoorbeeld de stappen


        (λx.x)aap aap

        (λx.yxy)z yzy


Een meer zinvol voorbeeld is het verdubbelen van woorden:


        (λx.xx)aap aapaap


Dus (λx.xx) is een woordverdubbelaar, elk woord waarop deze λ-term wordt ‘toegepast’, wordt in één stap verdubbeld. Een woord uitwissen kan ook:


        (λa.goed)slecht goed


Want goed bevat geen a!


λ-termen kunnen ook op zichzelf worden toegepast: zelfapplicatie. Voor de verdubbelaar levert dit een interessant verschijnsel op:


        (λx.xx)(λx.xx) (λx.xx)(λx.xx)


Het is inmiddels wel in te zien dat (λx.jwkxcs.vu.nl)@ het emailadres van J.W. Klop.