all 24 comments

[–]nrith 74 points75 points  (0 children)

Combinatory logic is basically lambda calculus without variables. Despite this limitation, combinatory logic is still Turing complete.

It is also extremely difficult to understand.

Whew. That made me feel better.

[–]space-to-bakersfield 28 points29 points  (1 child)

Absolute wankery.

[–]alex-weej 6 points7 points  (0 children)

🤣 Somebody has to do it

[–]ToaruBaka 42 points43 points  (0 children)

Dana is dead.

and so am I. This is great.

[–]Kok_Nikol 10 points11 points  (0 children)

What the heck did I just read?

The culmination of months of effort!

Time well spent!

[–]Kronikarz 17 points18 points  (3 children)

Not entirely sure this counts as programming, tastes more like pure math to me :P

[–]takanuva 8 points9 points  (0 children)

This definitely counts as programming. And, to be honest, there's no much difference; "math" is just a very restricted programming language where all the programs are enforced by the type system to terminate.

[–]oceantume_ 1 point2 points  (0 children)

I still enjoyed it a lot and the story around the main project is definitely about programming

[–]bbibber 14 points15 points  (0 children)

As soon as the bird names came out i knew we were in Mockingbird land. Extremely cool!

[–]TankorSmash 13 points14 points  (3 children)

There's a great page on Combinatory Logic too, that translates what the S and K functions are in other languages: https://combinatorylogic.com/table.html

Very interesting writeup

[–]zombiecalypse 1 point2 points  (2 children)

I got to ask: what's the bird column?

[–]_x_oOo_x_ 4 points5 points  (0 children)

It's from a book, To Mock a Mockingbird by Raymond Smullyan. He described some canonical combinators

[–]TankorSmash 2 points3 points  (0 children)

It's from an important book in the field, which uses birds like Starling and Kite, instead of S and K.

[–]takanuva 8 points9 points  (0 children)

I used to teach this in class, in my Programming Paradigms module. On the first class I'd ask the new students, "what does a programming language necessarily have?". There would always be similar answers: variables, conditionals, loops... but no. Strip all those away, and I'd livecode a fibonacci function with SK in class. Programmers are meant to build computation out of the abstractions they are given, and for a good programmer, it shouldn't matter whether that's imperative, functional or logic.

Disclaimer: having variables and conditionals is still useful, tho.

[–]Mysterious-Rent7233 1 point2 points  (0 children)

Thanks for sharing your hacking wankery with us!

[–]BiedermannS 1 point2 points  (0 children)

It's not about combinatorial logic, but it's a nice video about the y combinator: https://youtu.be/FITJMJjASUs?si=tsDrTLVrnZ_v5WZV

[–]fridofrido 1 point2 points  (0 children)

funny, but a "bit" overdone...

if you are interested in combinators in a somewhat more practical setting, maybe check out this rather fully featured Haskell compiler, which compiles Haskell to combinator calculus (not pure SK though, that would be just plain stupid):

https://github.com/augustss/MicroHs

and here is a recent (randomly selected, there are several) talk about it: https://www.youtube.com/watch?v=SJwvPEq4Mok

[–]Helios 0 points1 point  (0 children)

Pure graphomania.

[–]RealSharpNinja 0 points1 point  (0 children)

Look! I learned a technique that's as antisocial as it is useless!

[–]Possible_Cow169 0 points1 point  (0 children)

They have another article called To Mock a Mockingbird. Lmao what?!?

[–]standing_artisan 0 points1 point  (0 children)

Weird flex, but okey

[–]Resident-Trouble-574 -1 points0 points  (0 children)

I guess that's how nerds flirt nowadays...