Top Banner

of 30

a Graphical Notation for the Lambda Calculus With Animated Reduction

Apr 07, 2018

Download

Documents

Charles Alston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    1/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 1ttp://dkeenan.com/Lambda/

    To Dissect a Mockingbird:

    A Graphical Notation for the Lambda Calculus with Animated

    Reduction

    David C Keenan, 27-Aug-1996last updated 20-Nov-2009

    116 Bowman Parade, Bardon QLD 4065, Australia

    http://dkeenan.com

    Abstract

    The lambda calculus, and the closely related theory of combinators, are important in the foundations ofmathematics, logic and computer science. This paper provides an informal and entertaining introduction bmeans of an animated graphical notation.

    Introduction

    In the 1930s and 40s, around the birth of the "automatic computer", mathematicians wanted to formalisewhat we mean when we say some result or some function is "effectively computable", whether by machine

    or human. A "computer", originally, was aperson who performed arithmetic calculations. The "effectivelypart is included to indicate that we are not concerned with the time any particular computer might take toproduce the result, so long as it would get there eventually. They wanted to find the simplest possiblesystem that could be said to compute.

    Several such systems were invented and for the most part looked entirely unlike each other. Remarkably,they were all eventually shown to be equivalent in the sense that any one could be made to behave like theothers. Today, the best known of these are the Turing Machine, of the British mathematician Alan Turing(not to be confused with his touring machine, the bicycle of which he was so fond), and the LambdaCalculus, of the American logician Alonzo Church (1941). The Turing machine is reflected in the VonNeumann machine which describes the general form of most computing hardware today. The Lambda

    calculus is reflected in the programming language Lisp and its relatives which are called "functional" or"applicative" languages.

    The Turing machine is based on the idea of a tape of unbounded length, with a head which can move left right along the tape reading and writing symbols. These symbols can be interpreted as instructions (to movleft or right or read or write symbols) but may also be interpreted as data, particularly when it comes time read the result.

    http://dkeenan.com/http://dkeenan.com/http://dkeenan.com/http://dkeenan.com/
  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    2/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 2ttp://dkeenan.com/Lambda/

    The lambda calculus is based on the more abstract notion of "applying a function". For example we maywritey := 2x+3 to describe how to obtainy givenx, but suppose we want to describe, in the abstract, whais we are doing tox, so that we can do it to other things. We might make up a name for it, say"DoubleAndAddThree" or just "f", and writef(a) = 2a+3 to describe what we mean. But this is all ratherindirect and it would be a nuisance to have to keep making up new names and remembering what theymeant. Church used the greek letter lambda and a dot and showed that we could simply write a.2a+3 as name for the function. This operation is calledfunction abstraction. We could, of course, have used any

    symbol we like in place ofa. We can then apply this function to anything we like, for example z2

    , and wefind that (a.2a+3)(z2) simplifies to 2z2+3. We see that function abstraction and function application areinverses. Note that we must now be careful to use an explicit multiplication sign where juxtaposition mighbe wrongly interpreted as function application.

    We might want to express functions of more than one argument, such as addition ab.a+b, but we canalways express these as functions of one argument which return another function, e.g. a.(b.a+b). Thistransformation is called Currying, after Haskell Curry. If we apply this to the number 5 for example, weobtain b.5+b which may then be applied to a second number. We can think ofab.a as shorthand fora.(b.a)

    You may say, "So what?" All this seems to be making things more complicated not less. For example, whis "ab.a+b" any better than plain old "+"?

    What is remarkable about the lambda calculus is that one doesn't need anything as crude, gross orsubstantial as the digits 0 and 1 or operators like + and in order to do arithmetic and logic, orindeed any kind of computation.

    All we need is function abstraction and application. "Abstracted from what and applied to what?", you maask. Other such functions! Actually when they are not applied to anything except each other we refer tothem as combinators rather than functions. This is called thepure lambda calculus.

    Since there is no confusion with multiplication in the pure lambda calculus, we can omit some parenthesesandf(x) may be written simply asfx. Application is taken to be left associative so that (f(x))(y) or (fx)ymay be written as justfxy.

    We can write lambda expressions like a.a the identity combinator, or a.aa the combinator that applies ancombinator to itself, or ab.ba the combinator that reverses the order of application of two combinators.

    When I first understood the lambda calculus I felt that those arbitrary bound variables, like a,b,fandxabove, just served to obscure what was really going on. They are only necessitated by the constraint ofwriting everything as a one-dimensional string of symbols. So I am going to introduce you to some of thestrange characters that inhabit the world of combinators by using a two-dimensional notation that Ideveloped. This notation started from the idea that, instead of the bound variables we could draw arrowsconnecting each lambda symbol to blank spaces in the expression where its variable would have appeared

    As pointed out by Raymond Smullyan the eminent logician and author of several puzzle books, the theoryof combinators is an abstract science dealing with objects whose only important property is how they actupon each other. We are free to choose other properties of these objects in any way we like. In his delightfbook To mock a mockingbird, Smullyan (1985) chooses birds for his combinators, in memory of Haskell

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    3/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 3ttp://dkeenan.com/Lambda/

    Curry, an early pioneer in the theory of combinators (1958) and an avid bird-watcher.

    The story begins,"A certain enchanted forest is inhabited by talking birds. Given any birds A and B, if you call out the namof B to A, then A will respond by calling out the name of some bird to you; this bird we designate AB. ThuAB is the bird named by A upon hearing the name of B."

    Smullyan also notes in his preface,"This remarkable subject is currently playing an important role in computer science and artificialintelligence Despite the profundity of the subject, it is no more difficult to learn than high school algebra ogeometry."

    In the hope of making it even easier I introduce the following graphical notation by extending Smullyan'sbird metaphor. We will go inside the birds' heads and see how to draw diagrams of the internal plumbingwhich connects their ear to their throat in order to produce the correct song in response to each song thatthey hear. In other words we will draw maps of their brains.

    This notation was developed as part of an attempt to place the lambda calculus on an even deeper

    foundation. Both the attempt (so far unsuccessful) and the notation were inspired by George Spencer-Brown's controversial bookLaws of Form (1969).

    "The theme of this book is that a universe comes into being when a space is severed or taken apart. The acis itself already remembered, even if unconsciously, as our first attempt to distinguish different things in a

    world where, in the first place, the boundaries can be drawn anywhere we please. At this stage the univercannot be distinguished from how we act upon it, and the world may seem like shifting sand beneath ourfeet."

    It is a wonderfully bizarre fact that each song of a combinatory bird is not merely the name of another bird

    but is actually a complete description of the internal plumbing of that other bird. That is, each song isactually a brain map of some bird. Since a song is a complete description of how some bird will respondwhen it hears another bird, and the only important thing about a combinatory bird is how it responds whenhears another bird, we see that songs and singers are interchangeable. So we can say that the birds sing birto each other, or we can equally say that what we have is a bunch ofsongs that sing songs to each other!Combinatory birds exist at an almost mystical level. Their language has no distinction between verbs andnouns. A description of action can equally well be a name. To emphasise this, in future we will call ourdiagrams song maps.

    Unfortunately, although we have these diagrams, and the purely textual notation of the lambda calculus, wno longer know how to turn them into music. However I am confident that some day soon some brilliant

    mathematical musician or musical mathematician (or mathical musimatician?) will rediscover this ability. the meantime we must be content to appreciate the rhyme and rhythm of their graphical forms. It issomething of a mystery as to why the textual notation is called the lambda calculus, since surely any otherletter of the Greek alphabet would have done just as well. One suggestion is that these songs are actuallyquite suitable for dancing and that "lambda" is in fact a corruption of "lambada".

    Carol Hindley (1986) has given some marvellous drawings of the outsides of several well knowncombinators in her hilarious note "Care of Your Pet Combinator". Here we find that they bear somewhat

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    4/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 4ttp://dkeenan.com/Lambda/

    more resemblance to insects and reptiles than to conventional birds.

    Geoffrey Stoker (2001) has made a delightful web-based lambda expression reducer complete with birdpictures and sounds.

    One layer birds

    The simplest of these birds is called the Identity bird since its response to hearing the name of any bird isthat same (identical) bird. Smullyan remarks that superficially, the Identity bird appears to have nointelligence at all, and has been referred to as the Idiot bird. However the real reason for its apparentlyunimaginative behaviour is that it has a big heart and isfondof every bird. So when you callx to theIdentity bird, the reason it responds by calling backx is not that it can't think of anything else; it's just that wants you to know that it is fond ofx.

    It turns out to be an important fact that every combinatory bird is fond of at least one bird (speakingtechnically, we say every bird has a fixed point). That is, for every bird there is some song which you cancall to it and receive the same song in response.

    Figure 1 shows the song map of the Identity bird. We won't be as kind as Smullyan. We will refer to it asthe Idiot bird from now on since that's more fun and easier to say.

    Figure 1. Idiot Bird

    We make the convention that the filled half-circle on the left of the box represents the bird's ear

    (combinatory birds only have one ear) and the one on the right represents its throat. The dotted box is toenclose the plumbing which connects the two. We can also label the box. The label is not a necessary partof the graphical notation but merely to remind us of what we call this bird in English; "I" for "Identity" or"Idiot". In this case the plumbing is the simplest possible, a single pipe represented by the solid line. I havput an arrowhead on the line to indicate the direction of flow of information from ear to throat, but in futusince flow will nearly always be from left to right we will not clutter our diagrams with arrow heads excepto indicate reverse flow.

    Another simple bird is the Mockingbird. It is called a Mockingbird because its response to any bird is thesame as that bird's response to itself. This means that if you call out x to a Mockingbird you will get thesame response as if you had called outx tox.

    Figure 2 shows the song map of the Mocking bird. We will see later the reason for using a lower-caseomega () as its abbreviation. For now you can think of it as an upside-down 'm'.

    http://www.cs.virginia.edu/~gms2w/theory/Mockingbird.html
  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    5/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 5ttp://dkeenan.com/Lambda/

    Figure 2. Mockingbird

    I have introduced a new symbol, the filled circle, which you might think of as the combinatory birds' braincell. I call it an applicator. We can see that an applicator receives information from above and from its lefand responds to its right. It is called an applicator because of what it does with the information it receives;applies the bird whose description it receives from above, to the song which it receives from its left, in

    order to determine its response. The song arriving at the top is called the operator and the one from the lefthe operand. You might think of the circle as representing an ear and throat with nothing between them, bwaiting to have a song map introduced between them from above.

    You might also think of the applicator as a sort of universal bird since all it requires is the description of abird in order to become that bird.

    It may seem a little inside-out, or like pulling yourself up by your own bootstraps, to define ordinarcombinators as arrangements of universal ones, but such are the foundations of mathematics.

    The strips of movie film in figures 3 and 4 show the sequence of what happens when a Mockingbird hears

    the Idiot song and when it hears the Mockingbird song (i.e. the song describing itself).

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    6/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 6ttp://dkeenan.com/Lambda/

    Figure 3. A Mockingbird hears the Idiot song

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    7/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 7ttp://dkeenan.com/Lambda/

    Figure 4. A Mockingbird hears the Mockingbird song

    Ideally these movies would be shown in real time on a computer screen with many more in-between frameto give the appearance of smooth motion. You may be able to get some sense of motion if you can causeyour sight to snap suddenly from each frame to the next. Alternatively you could copy the movie, paste itonto light card, cut out the individual frames and make a 'flick-picture'. The later movies in this documentleave out more and more in-between frames to save space, so the 'flick-picture' approach will not work anwe will be forced to imagine the motion based on the more detailed movies we will have already seen.

    In both movies we can see the song on the left approaching the Mockingbird on the right. As the songpasses through the Mockingbird's ear, the box around the Mockingbird disappears. This annihilation as sonmeets ear might have been called box reduction but for historical reasons it is called beta () reduction. Thsong is then replicatedto follow two pipes which branch out from what was the inside of the ear. Bothpipes lead to the same applicator. The high pipe causes the song (or the bird it describes) to be substitutedfor the applicator which has been acting as a stand-in or variable bird. The lower pipe then leads the other

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    8/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 8ttp://dkeenan.com/Lambda/

    copy of the same song to be heard by this newly installed bird.

    At this stage (in the seventh frame of each movie) we see that the definition of a Mockingbird has indeedbeen satisfied because the result corresponds in both cases to a song being heard by that bird which itrepresents.

    In the case of the Idiot song being heard by an Idiot bird we can perform another beta reduction and obtai

    a result which is just the Idiot bird/song. This cannot be reduced any further. When no further beta-reductions can be performed we say that a bird (or song) is in normal form.

    Notice that the Mockingbird has disappeared in the process of producing its response, or rather it has beentransformed into its response. This is another aspect of combinatory birds which is very different fromordinary birds.

    In the case of the Mockingbird song being heard by a Mockingbird, the seventh frame is just what westarted with. No matter how many times the same steps are repeated the song will never be complete. Forthis reason it is generally considered rather cruel to go around the forest calling out the Mockingbird song Mockingbirds. If you call out any other song they know just what to do but when they hear their own song

    their poor little brains get lost in an endless loop. A Mockingbird in this magical or paradoxical state (i.e.responding to the Mockingbird song) is called an Omega () bird, and this is why the Mockingbird alone often called the little omega () bird (Omega is the last letter of the Greek alphabet and is often associatedwith infinity). Since the Omega bird does not stop reducing, we say it has no normal form, and so we arefree to represent it by any frame of its endless movie. Figure 5 shows the most popular representation.

    Figure 5. Omega bird

    Note that the outer box in this song map is not a proper box since it has no ear. It is merely to allow a namto be given to the arrangement inside it and doesn't alter the meaning. Not only doesn't the Omega bird haa normal form, it doesn't even have a head normal form (we also say it is unsolvable). Having a headnormal form requires at least having a single proper outer box (i.e. with an ear), as well as some otherrequirements which are beyond the scope of this paper. The Omega bird can never respond to anything ithears. The Omega bird is usually identified with allunsolvable birds and is interpreted as undefinedwhenthe lambda calculus is interpreted for logic and arithmetic.

    The direction of flow in song maps will usually be understood to be from left to right, but if we allow flowin the reverse direction and indicate it with an arrow we can give a simpler cyclic song map for the Omegabird as shown in figure 6.

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    9/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 9ttp://dkeenan.com/Lambda/

    Figure 6. Omega bird (cyclic form)

    It is unfortunate that the primary form of reduction was named after the secondletter of the Greek alphabebeta (). The form of conversion which was given the first letter, alpha (), turns out to be merely anartifact of the particular method of representing these songs as one-dimensional strings of symbols in thetextual lambda calculus. In the textual lambda calculus it is not possible for replication or substitution to

    occur separately from beta reduction and so they are not recognised as separate steps.

    Figure 7 describes the allowable transformations by using a meta-notation. The cloud with an italiccharacter stands for any expression (arrangement). The fanned-out lines with the ellipsis '...' between themstands for any number of pipes originating from the same point. The box with the italic character stands foa box containing any expression.

    Figure 7. The transformation rules expressed in a meta-notation

    Two layer birds

    It would be a very boring forest if the only birds were the Idiot bird and Mockingbird and the birdsderivable from them. I now introduce the simplest of the two layer birds, the Kestrel and the Kite. Like thIdiot bird, these birds contain no applicator and yet they turn out to be amazingly useful. See figure 8.

    Figure 8. The two layer birds having no applicator

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    10/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 10ttp://dkeenan.com/Lambda/

    The Kestrel's response to hearing a songx is (a song which describes) a bird which responds withx nomatter what it hears. We say the Kestrels response tox is the constant-x or Kx bird (In German, the wordfor "constant" starts with a 'k'). The Kite ignores what it hears and always responds with the Idiot song, sois the KI bird.

    Note that these birds have an inner box with an inner ear and throat. Pipes may pass freely into inner boxe

    from outer ears without having to pass through an ear. Combinatory birds can have ears which aren'tconnected, so long as something connects to every throat.

    Figures 9 and 10 show movies of the Kestrel hearing the Idiot bird and the Kite hearing the Mockingbird.

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    11/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 11ttp://dkeenan.com/Lambda/

    Figure 9. A Kestrel hears the Idiot bird

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    12/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 12ttp://dkeenan.com/Lambda/

    Figure 10. A Kite hears the Mockingbird (or any bird)

    So the Kestrel's response to the Idiot song is in fact the Kite. In the Kite movie, notice that it wouldn't havmattered what song the Kite heard, it would still have responded with the Idiot song. The Kestrel and Kiteare sometimes called the true andfalse birds because they are commonly interpreted as such whencombinatory birds are made to do logic and arithmetic. See Appendix A.

    Note that between frames 3 and 9 of the Kestrel movie we perform a simple relocation which must not betreated as a beta reduction. No box is annihilated because no song passes through an ear. Figure 11 describthe general situation in the meta-notation.

    Figure 11. Simple relocation (no beta reduction is involved)

    Next we introduce the two-layer birds having one applicator. There are four of these as shown in figure 12the Idiot bird once removed, the Thrush, the Konstant Mocker and the Crossed Konstant Mocker. Noticethat we've included the equivalent textual lambda notation, "ab.ab" etc., underneath each song map.

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    13/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 13ttp://dkeenan.com/Lambda/

    Figure 12. The two layer birds having one applicator

    The meaning of the term "once removed" will become clearer when we see some more once removedrelatives. You should see what is meant by "crossed" if I tell you that the Thrush could be called "theCrossed Idiot-bird-once-removed" (CI*). We can think of the 'T' in 'Thrush' as also standing for

    'transposed'. We see that the Konstant Mocker will respond with the Mockingbird no matter what it hears.The Crossed Konstant Mocker is of no particular interest but is shown to complete the family.

    Note that the crossed pipes in the Thrush are not to be considered as connecting together but merely passineach other. This is one of the limitations of only having two-dimensions in which to draw our song maps.However, we can always tell the difference between a joint and a crossover because joints can not occur a

    fan-ins , only fan-outs . For a crossing to be interpreted as a joint, it would have to involve illegal fan-in followed by a fan-out.

    There are sixteen two-layer birds that have two applicators and not all of them have English names. I showfew of the most popular in figure 13, the Lark, Owl, Warbler and Crossed Warbler.

    Figure 13. Some common two layer birds having two applicators

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    14/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 14ttp://dkeenan.com/Lambda/

    Although the Warbler could have been abbreviated as * since it is the Mockingbird-once-removed,historically the use of W goes back further than that of and in fact the Mockingbird was referred to onlyas WI for a long time. This is another reason for the choice of rather than M for the mockingbird. Notethat LI = OI = WI = .

    Figure 14. Lark and Crossed Warbler annotated to show rhyme and rhythm

    Now that we have birds with more than one layer and more than one applicator we can distinguish twomajor sections of any song map, the rhyme and the rhythm. The rhyme is the section at the leftmost end o

    a box, where all the fan-outs and crossings occur. For example the Lark and the Warbler have the samerhyme. If we assign the letter 'a' to the outermost ear and 'b' to the inner one and follow the pipes to the rigpast the sloping sections until they run parallel again, we can write the Lark and Warbler's rhyme as "abb"corresponding to the downward direction on the song map. The Crossed Warbler then has "baa" and theOwl has "bab". For birds with two layers and two applicators there are eight possible rhyme schemes. The

    general rule is for birds with llayers and a applicators there are la+1 rhyme schemes.

    The rhythm section is the section immediately to the right of the rhyme, containing the applicators. Noticethat there are no fan-outs or crossings in the rhythm section, only pipes being reduced in pairs, viaapplicators, until only one pipe remains. This pipe then connects to the throat. You can see that the Lark athe Owl have the same rhythm but this is different from the rhythm shared by the Warbler and the Crossed

    Warbler. The first we write as "(-(- -))" and the second "((- -) -)", although in future we can omit the outebrackets without ambiguity. These are the only possible rhythms for a bird with two applicators. It could bthat the duration of the notes is halved each time we enter parentheses and doubled again when we leave.Figure 14 shows a Lark and a Crossed Warbler annotated to show the correspondence between textual andgraphical notations.

    You may have noticed that a rhythm section corresponds to a binary tree. The number of rhythms using aapplicators is the a-th Catalan number which can be found by taking the number of rhythms using a-1applicators and multiplying by (4a-2)/(a + 1). Of course there is only one rhythm with zero applicators. Tseries starts, 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, ... .

    So we see that the ultimate question to the answer to life the universe and everything, from Douglas AdamThe hitchhikers guide to the galaxy, could in fact have been "How many combinatory rhythms can youmake with five applicators?".[My thanks to Walt "BMeph" Rorie-Baety for encouraging a long overdue mention of Catalan numbers. 2Sep-2009]

    We can determine the number of possible birds with a given number of layers and applicators bymultiplying these two numbers together (rhymes x rhythms). We can combine the textual notations used

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    15/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 15ttp://dkeenan.com/Lambda/

    above for rhyme and rhythm to give song schemes like "(ab)b" for the Warbler and "b(ab)" for the owl.However, this is not enough to uniquely describe a bird textually since for example the Idiot bird and theKestrel would both be "a". We must also indicate how many layers the bird has. We do this by prefixing trhyme and rhythm with a complete list of the layers involved from outside to inside, preceded traditionallyby a lambda () and followed by a dot. So the Idiot bird is "a.a", the Mockingbird is "a.aa", the Kestrel "ab.a" and the Kite is "ab.b".

    There is no limit to the number of applicators a bird can have. It does not depend on the number of layersFor example, the multiple-mockingbird family consists of all birds with only one layer. There are twodifferent double-mockingbirds (having two applicators), five triple-mockingbirds (three applicators),fourteen quadruple-mockingbirds and so on. Under this scheme, the Idiot bird may be considered as thezeruple-mockingbird. [Note: This is different to the sense in which Smullyan uses "double mockingbird"]

    Of the 80 two-layer birds which have three applicators, I show only the Turing bird, named after itsdiscoverer the logician and computer scientist Alan Turing. See figure 15. I will tell you more later aboutthe importance of the Turing bird in connection withfixed-pointbirds.

    ab.b((aa)b)

    Figure 15. Turing bird

    Three layer birds

    We now move on to three-layer birds. We start with the most popular three-layer two-applicator birds, theCardinal and the Bluebird in figure 16. These birds, along with the Idiot bird and the Kestrel, were amongthe first five combinators described in 1920 (published in 1924) by Moses Schnfinkel. Incidentally "schnFinken" is German for "beautiful finches".[My thanks to Henning Kopp for correcting my earlier poor translation. 30-Aug-2009]

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    16/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 16ttp://dkeenan.com/Lambda/

    Figure 16. The best known three layer two applicator birds

    The Cardinal might have been called the crossing bird because it always responds with the crossed cousin whatever bird it hears. For example if it hears the Warbler song it will respond with the Crossed Warblerand vice versa. Its response to the Thrush song is the Idiot bird once removed, and vice versa. The word"converse" is often used instead of "crossed" in this context. If it hears a song which has more than twolayers the Cardinal will cross the connections from the two outermost layers only. The Cardinal has theeffect of altering the rhyme of whatever bird it is applied to, but it will never alter the rhythm.

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    17/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 17ttp://dkeenan.com/Lambda/

    Figure 17. A Cardinal hears the Thrush song

    Figure 17 shows a movie of a Cardinal doing its thing with a Thrush. It shows between successive frames(1) a beta reduction, (2) a simple relocation, (3) a substitution, (4) a second beta reduction, (5) relocation,(6) substitution, (7) a third beta reduction and (8) relocation (9).

    Notice that the second and third beta reductions are slightly different to those we have seen before. Theconnection which allows the box to be removed comes not from the throat of another bird but from theinside of the ear of another bird. Our meta-notation (cloud picture) for beta reduction should be understooto allow for either.

    While the Cardinal is a rhyme altering bird which will never alter the rhythm, the Bluebird is a rhythmaltering bird which will never alter the rhyme. The Bluebird is often called the composition bird (anothermusical reference?) because when applied to two birds in succession it produces a single bird which is thecomposition of those two birds. By "applied to two birds in succession" we mean that we apply B to the firbird a then we apply the resulting bird Ba to the second bird b to obtain the result (Ba)b. By the compositiof two birds a and b we mean a single bird which when applied to some bird c has the same effect as first

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    18/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 18ttp://dkeenan.com/Lambda/

    applying b and then applying a to the result, i.e. a(bc). Unfortunately "composition" doesn't start with a 'Bbut we can think of the 'B' as standing for bracketing if we think in terms of the textual rhythm notation "-(- -)" we saw earlier.

    The Bluebird also functions as a once-removalbird for three layer birds only. You should have guessed bynow that once-removal involves inserting a new applicator into the topmost pipe and supplying its operatofrom a new outer layer. Calling out the Idiot song to any once-removed bird will have the effect of undoin

    the once-removal.

    Figure 18 shows how a Bluebird composes a Cardinal and a Thrush. I have substantially reduced theamount of in-between detail to the point where I no longer show relocations, replications or substitutionsseparately where they immediately follow a beta reduction. This coarse level of detail is the bestone can din the textual lambda calculus!

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    19/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 19ttp://dkeenan.com/Lambda/

    Figure 18. A Bluebird composes a Cardinal and a Thrush

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    20/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 20ttp://dkeenan.com/Lambda/

    The resulting bird is called the Vireo, also known as the pairing bird because of its ability to take two birdand form a single bird from which either part may be recovered by applying it to either the Kestrel (true) the Kite (false) depending on whether the first or second part is required. This pairing property can be userepeatedly to make lists or trees. This property also comes in handy for doing logic and arithmetic as showin appendix A.

    Note that the first frame of the movie in figure 18 has the form

    This is different from

    The above equivalences follow from the substitution rule given in figure 7. Figure 19 expresses this non-equivalence as a general non-rule in the meta-notation.

    Figure 19. Only an abstraction (a box with a free ear) can be substituted for an applicator

    It is traditional in the textual form that operator and operand are simply placed side by side with the operaton the left and the operand on the right with parentheses to remove any ambiguity. This is opposite to theorder for direct application in the graphical form. It is also traditional in the textual lambda calculus that wavoid having to write so many brackets by using a left-associative convention. That is, BCT is the same as

    (BC)T. This proves to be rather unfortunate when compared with the graphical form. The graphicalexpression which looks most like "BCT" (apart from the left-right reversal) corresponds in fact to B(CT). we were to make a right-associative convention for the textual form, the correspondence with the graphicform would be more obvious. Gyrgy Rvsz also remarks on how unfortunate is the traditional choice andin fact, chooses to go against tradition in his book (1988, p16-17). We will stay with tradition in theremainder of this paper.

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    21/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 21ttp://dkeenan.com/Lambda/

    Figure 20. (Owl once removed)

    The Starling, shown in figure 20, is the last of Schnfinkel's original five combinators to be introduced.These are the Idiot bird, Kestrel, Cardinal, Bluebird and Starling, I, K, C, B, S (although Schnfinkel callesome of them by different letters at the time). These five birds alone can easily generate all other birds. ThStarling is the only one of these birds to perform replication. Note that SII = .

    Primitive birds

    While it is remarkable enough that the five birds I, K, C, B, S can be used to derive all others, it is an evenmore remarkable fact, shown by Shnfinkel, that all other birds can be derived from the Starling and Kestralone, although the expressions involved can be enormous. For example:

    I = SKKB = S(KS)KC = S(BBS)(KK) = S(S(KS)K(S(KS)K)S)(KK)

    K and S have been likened to Adam and Eve or Yin and Yang. Note that crudely speaking, K destroys(eliminates) and S creates and changes (replicates and changes both rhyme and rhythm).

    There are deterministic rules which allow us to take any expression and work backwards to obtain anequivalent in terms of K and S alone (see Smullyan, 1985; Peyton Jones, 1987). This fact has been used tobuild computers called combinator reduction machines, whose basic instructions correspond to K and S,although for efficiency reasons I, C, B and Y (which we will meet later) are usually included as well. Withregard to the number 42 and The hitchhikers guide to the galaxy;could it be thatDeep Thoughtwas acombinator reduction machine?

    Schnfinkel dreamed of another bird called the Jay from which the Starling and Kestrel (and so all birds)could be derived. It seems that the closest we can come to this is the quite complicated bird shown in figur21. While not quite what Schnfinkel had in mind, it has been given the name Jay.

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    22/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 22ttp://dkeenan.com/Lambda/

    Figure 21. Jay

    The Jay was discovered in 1935 by J. Barkley Rosser and has the property that it can be used in associatiowith the Idiot bird to derive all birds except those which ignore or eliminate one or more of their inputs(such as the Kestrel and Kite). I will show how we obtain C, B and S. To do this it is convenient to showcertain other birds along the way. We have met the Thrush, Mockingbird and Warbler before, but the Robi(R) is new.

    T = JIIR = JT = J(JII)C = RRR = J(JII)(J(JII))(J(JII))Here the expressions become too big to continue expanding fully.B = C(JIC)(JI) = C(C(C(BJT)T)T)TW = C(BR)S = B(BW)(BBC)

    [My thanks to Dr. Johannes Waldmann http://www.informatik.uni-leipzig.de/~joe/ for correcting an error i

    an earlier version of the expression for the Bluebird.]

    To test your understanding of reduction you might like to work out the normal form of the Robin now byreducing the graphical version of the expression JT. The Robin is shown in Appendix A.

    Many other sets of primitive combinators are possible and we could argue forever over which is morefundamental. In fact there is a direct relationship between bases for the theory of combinators and axiomschemes for implication logic, via a mapping called "Formulae as Types". See Hindley & Seldin (1986).

    One basis that proves particularly convenient for this graphical notation is K, , T, B, in which eliminatioreplication, permuting (rhyme-changing) and regrouping (rhythm-changing) are represented in their simple

    form, each by a separate combinator. Given that R = BBT we can use the derivations above to show that Sis derivable from , T, and B.

    Fixed-point birds

    I remind you that the bird/song analogy is only an analogy. There is really no distinction between birds ansongs. This corresponds merely to the operator/operand distinction which is relative to a particularapplicator.

    http://www.informatik.uni-leipzig.de/~joe/
  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    23/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 23ttp://dkeenan.com/Lambda/

    If we cause a Turing bird (U) to hear its own song we end up with a bird called the Theta () bird which a fixed-point finding bird or simply afixed-pointbird. The Turing and Theta birds were discovered by AlaTuring in 1937. The Theta bird does not have a normal form. Figure 22 shows one possible representationobtained by performing a single beta reduction on UU and relocating the first U inside the remains of thesecond. This version of the Theta bird is at least in weak head normal form which means only that it has aouter box with an ear.

    Figure 22. Theta bird

    A fixed-point bird has the amazing property that on hearing any bird b, it responds with a birdfof which bis fond. That is, it responds with a fixed-point ofb. So if we want a solution forfin the recursive equation= bfwe need only write b (or Yb as we shall see later). The proof that fixed-point birds exist, is a verypowerful result since it says that it is meaningful to define functions by means of recursive equations such that forfabove. While a combinatory bird may have more than one fixed point it turns out that the fixedpoints can always be ordered according to their definedness. It is beyond the scope of this paper to describthe precise meaning of definedness in this context, but recall that the Omega bird is considered to becompletely undefined. The thing defined by a recursive equation is considered to be that fixed point whichleast defined, called simply "the least fixed point". See any of the introductory texts mentioned in the

    references at the end of this paper.

    The simplest fixed-point bird, the Why bird, is generally attributed to Haskell Curry around 1942 (see thenotes on p185 of Curry, 1958). Perhaps the name refers to the incredulity of its discoverer, "Why does itexist?" or "Why does it work the way it does?". See figure 23.

    Figure 23. Why bird

    As with the Omega bird, the Why bird turns out to have a simpler cyclic description (Simon Peyton Jones1987) which better supports our intuition about how it works. See figure 24.

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    24/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 24ttp://dkeenan.com/Lambda/

    Figure 24. Why bird (cyclic description)

    Note for example that YI = for both cyclic and acyclic forms of Y and . Every combinator is a fixedpoint of I but is the leastfixed-point of I although the meaning of "fixed" must be stretched somewhat taccommodate this. Some other interesting derivations involving Y are Y = SLL, (where L = CB, the Larand = YO, (where O = SI, the Owl).

    The cyclic textualform shown for the Why bird in figure 24 can similarly be used to describe the Omega

    bird as " ".

    In such a fundamental discipline as this, we should not be surprised to find an object which is

    apparently disappearing up its own fundament.

    The surprising thing is that Y, and can be written non-cyclically.

    It is a fact of mathematical life (as shown by Kurt Gdel) that if we are to have something as powerful as Why bird (a fixed-point bird) we must accept the risk of producing an Omega bird (a non-terminating birdOur old friend the Mockingbird, with its ability to apply a bird to itself, is implicated in both.

    Conclusion

    I hope that this paper has shown the potential of a carefully designed animated graphical notation to bring

    human spatial and temporal intuitions to bear on the study of such an abstract discipline as the lambdacalculus. I hope it will be as useful as an intuition amplifier for the lambda calculus and combinators as arWarren Robinett's (1982) gameRocky's Boots (and its successorRobot Odyssey) for Boolean algebra andJohn Conway's game ofLife for cellular automata (see Poundstone, 1985).

    Some important aspects of the notation are:

    its potential to be automatically generated and manipulated,its potential for the smooth animation of reduction steps for teaching purposes,its complete independence of text, and hence elimination of alpha conversion (although textual cuesmay still be used, such as the naming of abstractions),its use ofcontainmentas well as directed-connectivity as a visual cue,its separation of rearrangement/replication of variables from their order of application (rhyme vs.rhythm),its aesthetic layout rules (as yet unstated) which should determine a canonical graphical form forevery normal form expression, for ease of recognition.

    Future directions

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    25/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 25ttp://dkeenan.com/Lambda/

    While this paper has been an attempt at an informalintroduction to lambda calculus, the graphical notatioshould be formally described and the correspondences between it and the well-understood textual lambdacalculus should be elucidated if it is to be widely used. If the drawings are to be made by machine or withmachine assistance, the aesthetic layout rules should also be made explicit.

    I might be convinced that the diagrams should be flipped horizontally so that the order ofapplications mamore directly onto the textual form, however the order ofabstractions would no longer map directly, unles

    (for example) abc.def were to be rewritten as def.cba.

    If this exposition were to be extended, some explanation should be given ofnormal order reduction versuunsafe reduction orders, and head normal form and weak head normal form should be explained fully. Thgraphical version ofeta () reduction should be introduced to allow for the extensional equivalence ofcombinators such as I and I*. Note that these are the only extensionally equivalent pair of combinators inthis paper.

    I hope that someone, with more resources than I, will implement it as a computer 'game'. The user would sup an initial expression and watch as it evolved according to the combinatory 'laws of physics' (normalorder reduction). It might be more interesting if the metaphor was changed to one of mythical beasts

    devouring one another. It should also be possible to find a mapping which will give a unique musical tunefor most combinators. The tune might correspond to the type of the combinator when it has one. SeeHindley & Seldin (1986).

    The notation might be extended to become a full programming language, or at least a program readinglanguage. For this purpose I would allow the internal details of lower-level named abstractions to besuppressed while providing pan, zoom-in and zoom-out facilities for program browsing and editing. Atranslator from an existing textual functional language would be a worthwhile project, although matchingsome of their more recent syntactic conveniences could be difficult.

    Appendix A. Logic and Arithmetic

    There are many ways ofinterpreting lambda calculus for logic and arithmetic. By far the most popularchoices for true andfalse are K and KI respectively, although I and KI have some advantages, and of courany such pair could also be swapped. The former is a particularly useful choice because the 'if then else 'function is then simply the Identity combinator (or no combinator at all). Remember that K ( true) returns tfirst of two arguments and KI (false) returns the second. Figure 25 is to remind you what these birds looklike, along with the Thrush and two of its descendants, the Vireo and the Robin.

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    26/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 26ttp://dkeenan.com/Lambda/

    Figure 25. Some birds which can be used to perform logic and arithmetic

    We have seen the Vireo before as the result of BCT. The Robin may also be derived from the Thrush as

    BBT. I now give the usual interpretations of the logical constants and connectives from Henk Barendregt(1984), which I leave for you to verify for yourself. Note that all functions are prefix not infix, that is, wemust write "impliesab" rather than "aimpliesb". You may like to consider the expression "Y not" (theleast fixed point of the logical negation function) to determine why Curry referred to the Y combinator asthe paradoxical combinator.

    true = Kfalse = KInot= Vfalsetrue = V(KI)Kimplies = R true = RKand= Rfalse = R(KI)or = T true = TKequiv = CS not= CS(V(KI)K)

    Here are Barendregt's interpretations for Peano arithmetic (many others are possible).

    zero = Isucc = Vfalse = V(KI)pred= Tfalse = T(KI)

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    27/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 27ttp://dkeenan.com/Lambda/

    isZero = T true = TK

    succ is the successor function such that succn = n+1, pred is the predecessor function such thatpredn+1n, and isZero returns true if its argument iszero andfalse if it is positive. We don't care whatpredzero isand we don't care what happens when any of the functions are applied to expressions which do not represenumbers. Expressions which represent numbers are called numerals. Here are some example numerals. Yoshould test the operation ofpredand isZero on them.

    one = succzero = V(KI)Itwo = succone = V(KI)(V(KI)I)

    Note that these numerals work by tallying (sometimes called unary although it is not base one). The numern consists of a list ofnfalses terminated by an I (as the empty list). It is possible to produce more efficientnumeral systems, such as binary, in the lambda calculus but the definitions of their succ,predand isZerofunctions are more complicated. For example den Hoed's binary numerals are abc.a, abc.ac, abc.abc,abc.acc, abc.abbc, abc.acbc, , where b and c act as 0 and 1 and the most significant bit is the rightmost(van der Poel et al., 1980).

    Given any numeral system with succ,predand isZero, we can define addition recursively as follows.addbc= if(c = 0) thenb else ((addbc-1)+1)= if(isZeroc) thenbelse (succ (addb (predc)))= ifThenElse (isZeroc) b(succ (addb (predc)))= ( isZeroc) b (succ (addb (predc)))= isZerocb (succ (addb (predc)))

    Then by abstracting b and c (abstraction is the inverse of beta-reduction) we can write

    addbc= (bc.isZero c b(succ (addb (predc)))) bc

    so

    add= bc.isZero c b (succ (addb (predc)))

    Now by abstracting additself we can write

    add= (abc.isZero c b(succ (a b (predc)))) add

    This is now in the form off= bfso we can use a fixed-point combinator to solve it, and we write

  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    28/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 28ttp://dkeenan.com/Lambda/

    add= Y (abc.isZero c b(succ (a b (predc))))

    This procedure can be continued to define multiplication and exponentiation and indeed any computablefunction on the integers, as proved by Stephen Kleene.

    Here's another way of interpreting the pure lambda calculus for arithmetic, called Church numerals. Churcnumerals have a particularly simple form when expressed in the textual notation.zero = fx.x = KIsucc = afx.f(afx) = SBSoone = fx.fxtwo = fx.f(fx)three = fx.f(f(fx))etc.add= abfx.af(bfx)multiply = abf.a(bf)

    power = ab.ab

    Jeff James (1993) has developed a system, inspired by Spencer-Brown's work, which does arithmetic usinga topological notation with only two kinds of boundary. These may be represented textually as brackets ()and [], with the interpretation of the empty expression as zero, () as one, ()() as two etc., addition is simplejuxtaposition ab and multiplication is ([a][b]) and so on. If () is understood as an exponential function andas a logarithmic function, it all suddenly makes sense, however the arithmetic is actually performed usingonly four simple axioms: ([a]) = a, [(a)] = a, []a = [], ([a][b])x = ([ax][bx]). I mention this because I can'thelp feeling that it is somehow related to the lambda calculus and combinators but I don't see how. Maybeyou do.

    Acknowledgement

    This work was carried out while the author was supported by an Australian Postgraduate CourseworkAward. Thanks go to Lou Kauffman and Dick Shoup for their discussions regarding earlier drafts of thispaper.

    References

    Barendregt, H.P. http://www.cs.kun.nl/~henk/ (1984) The lambda calculus Its syntax and semantics. NorthHolland Publishing Company, Amsterdam.

    Church, A. (1941) The calculi of lambda-conversion. Princeton University Press.

    Curry, H.B. & Feys R. (1958) Combinatory logic. North-Holland Publishing Company, Amsterdam.

    Grim, Leslie and Walace, Mike (1984)Robot Odyssey, (computer software).http://members.aol.com/fractal101/odyssey.htmftp://ftp.apple.asimov.net/pub/apple_II/ The LearningCompany.

    ftp://ftp.apple.asimov.net/pub/apple_II/http://members.aol.com/fractal101/odyssey.htmhttp://www.cs.kun.nl/~henk/
  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    29/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Page 29ttp://dkeenan.com/Lambda/

    Hindley, C.J. (1986) Care of Your Pet Combinator, in Hindley, J.R. and Seldin, J.P. (1986) Introduction toCombinators and Lambda-Calculus, Appendix 3. Cambridge University Press.

    Hindley, J.R. and Seldin, J.P. (1986)Introduction to Combinators and Lambda-Calculus. CambridgeUniversity Press.

    James, J. M. (1993).A calculus of number based on spatial forms . Thesis, Master of Science inEngineering, University of Washington. http://www.rgshoup.com/lof/doc/jjames-thesis.txt

    Peyton Jones, S.L. (1987) The implementation of functional programming languages. Prentice-HallInternational.

    van der Poel et al. (1980)New arithmetical operators in the theory of combinators, Indag. Math. 42.

    Poundstone, William (1985) The Recursive Universe. Oxford University Press, Oxford.

    Rvsz, G.E. (1988)Lambda-calculus, combinators and functional programming. Cambridge tracts in

    theoretical computer science v.4. Cambridge University Press, UK.

    Robinett, Warren, et al. (1982)Rocky's Boots, (computer software).http://members.aol.com/fractal101/odyssey.htmftp://ftp.apple.asimov.net/pub/apple_II/ The LearningCompany.

    Schnfinkel, M. (1924) On the building blocks of mathematical logic, in van Heijenoort, J. (1967) FromFrege to Gdel: A source book in mathematical logic, 1879-1931. Harvard University Press.

    Smullyan, R.M. (1985) To mock a mockingbird. Alfred A. Knopf, New York.

    Spencer-Brown, G. (1969)Laws of Form. George Allen and Unwin, London. 2nd edition, 1972, JulianPress, New York. 3rd edition, 1979, E.P.Dutton Paperback, New York. http://www.lawsofform.org

    Stoker, Geoffrey M. (2001)Mockingbird Fun. http://www.cs.virginia.edu/~gms2w/theory/Mockingbird.htm

    Other Links

    Thanks to John Atwood for the following links.

    For a similar notation for the Lambda calculus see Vex/Viper out of the Univ. of Colorado, Boulder:

    http://www.computer.org/conferences/vl95/html-papers/citrin/citrin.html

    For more on visual programming languages:

    http://cui.unige.ch/eao/www/Visual/Visual.Programming.biblio.htmlhttp://www.cs.orst.edu/~burnett/vpl.html

    http://www.cs.orst.edu/~burnett/vpl.htmlhttp://cui.unige.ch/eao/www/Visual/Visual.Programming.biblio.htmlhttp://www.computer.org/conferences/vl95/html-papers/citrin/citrin.htmlhttp://www.cs.virginia.edu/~gms2w/theory/Mockingbird.htmlhttp://www.lawsofform.org/ftp://ftp.apple.asimov.net/pub/apple_II/http://members.aol.com/fractal101/odyssey.htmhttp://www.rgshoup.com/lof/doc/jjames-thesis.txt
  • 8/3/2019 a Graphical Notation for the Lambda Calculus With Animated Reduction

    30/30

    8/14/11 12:o Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction

    Some other visual languages are: ToonTalk, StageCast, Prograph:

    http://www.toontalk.comhttp://www.stagecast.comhttp://www.pictorius.com

    http://www.pictorius.com/http://www.stagecast.com/http://www.toontalk.com/