Hacker News new | past | comments | ask | show | jobs | submit login

Longer and more familiar tokens that don't all just look like piles of meaningless letters make it so a non-math person can follow it right up until they start taking about booleans. They totally lost me there. But I'm impressed that they explained it in a way that let me even get that far.

After that it starts not making sense without prior knowledge.

I vaguely remember something about there being no data other than functions, so I assume the values of true and false are represented by functions represented by birds?

What does a doubling one of the words have to do with an OR? I'm assuming that when you pass one of these birds to another bird, there's something special happening, and the mockingbird is no longer just repeating a value, and there's some kind of function composition happening?




Its like a version of math where you're representation of "2" is "++" so the expression 2 + 2 becomes "++" + "++".

"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 is actually a brain map of some bird. Since a song is a complete description of how some bird will respond when it hears another bird, and the only important thing about a combinatory bird is how it responds when it hears another bird, we see that songs and singers are interchangeable. So we can say that the birds sing birds to each other, or we can equally say that what we have is a bunch of songs that sing songs to each other! Combinatory birds exist at an almost mystical level. Their language has no distinction between verbs and nouns. A description of action can equally well be a name."

https://dkeenan.com/Lambda/

The bird K was defined as True, and KI as False (try not to think about the fact True(x) / False(x) evaluates to something).

The claim is that the bird M is logical OR. We can test this exhaustively. M repeats the first word twice, K omits the 2nd word, and I is just there. Leftmost bird is always the next in line for evaluation.

or(false,false): M(KI)(KI) : (KI)(KI)(KI) : I(KI)(KI) : (KI)(KI): I(KI) : (KI) = false

or(true,false): MK(KI) : KK(KI) : K = true

or(false,true): M(KI)K : (KI)(KI)K: I(KI)K : (KI)K : IK : K = true

or(true,true): MKK : KKK : K = true

So it works as claimed!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: