Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Birb: Programming with bird emojis (esolangs.org)
174 points by marvinborner on Sept 13, 2023 | hide | past | favorite | 28 comments


> Birbs stagger as they walk: they are reduced in alternating associative order, starting with left associativity at birb index ⌊len/2⌋:

    BB -> (BB)
    BBB -> ((BB)B)
    BBBB -> (B((BB)B))
    BBBBB -> ((B((BB)B))B)
    BBBBBB -> (B((B((BB)B))B))
    BBBBBBB -> ((B((B((BB)B))B))B)
   ...
This is the worst operations order I've ever seen and I love it so much.


Wow, this is (evil) genius. It suggests all sorts of obnoxious "features" for esolangs:

- Order of operations depends on number of terms in more complicated manner.

- Order of operations depends on data? This would make compiling the language basically impossible, but you could probably get away with it in an interpreter.

- Parenthesis have side effects, in addition to changing order of operations.


> Order of operations depends on data? This would make compiling the language basically impossible, but you could probably get away with it in an interpreter.

This is not even a hypothetical feature. There is at least one language which used a type information to resolve associativity [1]. I have even used one, it works, but was very hard to get accustomed for me.

[1] https://dl.acm.org/doi/10.1145/1596655.1596667 (especially search for "juxtaposition")


Very interesting. And it's not even an esolang, but something actually intended for production use!

Looking closer, it's not as bad as what I had in mind. Association order only depends on type, not value (which is what I meant by data). This means you can figure it out at compile time, and actually makes some sense if you want to be able to use standard mathematical notation like they do, which has operators with different association orders.


That reminds me of the Husk golfing language [0] that I played with a few years ago. Each character corresponds to a few different commands, each with a distinct list of argument types.

The interpreter takes a brute-force approach of going through each interpretation until it finds one that works. Sometimes, it simply hangs forever, and other times, it interprets the program differently than you'd expect. But I always considered that as part of the charm of golfing in it.

[0] https://github.com/barbuz/Husk


Isn't it equivalent to the clockwise/spiral rule in C declarations?

https://c-faq.com/decl/spiral.anderson.html (HN discussion https://news.ycombinator.com/item?id=12775735 (225 points | October 2016 | 69 comments)


This is absolutely hilarious. I have a parrot and just reading this cracks me up.


The fact there isn't a crow (or other corvids) is a crime. Otherwise I enjoy this immensely.


The only emoji that comes close to a crow is probably the black bird ⬛ (edit: hn does not seem to render this?). Unfortunately, it's a joined letter and therefore can't be parsed/typed that easily.

Other than that the combinators that I would have liked to match are vireo, warbler, thrush, lark, jay, hummingbird, (gold-)finch and becard - all of these don't have emojis.


Also, looks like that Birb is from 2021 - the black bird emoji only showed up last year.


Yes, the initial idea[1] was proposed by SCKelemen in 2021. The current design and implementation was created by me a few days ago. Basically everything in the language is up for discussion.

[1] https://esolangs.org/w/index.php?title=Birb&oldid=82033


I'm now waiting for a discovery, that hieroglyphs not only told some stories, but represented ancient algorithms in a programming language similar to this one.



I see that author used these Combinator Birds or Birbs [1].

[1] https://www.angelfire.com/tx4/cus/combinator/birds.html


Which goes back to Raymond Smullyan: https://en.wikipedia.org/wiki/To_Mock_a_Mockingbird


This language would work well in the universe of the fictional absurdist documentary “the falls”

The Falls — Greenaway / Nyman

https://youtu.be/dTKNMR9KDZg?si=BR521zn3VsK6zTEF


What is it with birds, Greenaway & Nyman?

Angelfish Decay | Swan Rot: https://www.youtube.com/watch?v=-TBNvlyjTQg


It’s because Birds aren’t real. https://birdsarentreal.com/



> Birbs stagger as they walk: they are reduced in alternating associative order, starting with left associativity at birb index ⌊len/2⌋

Big oof


Reminds me of a similar project by Devine Lu Linvenga: https://wiki.xxiivv.com/site/logic.html


I honestly have no idea what I'm looking at, but I love it.


It's flying lovely :D


Can we see '99 bottles of beer' in Birb, please?


Should be easy now, I implemented a lambda calculus to birb transpiler. The resulting program would be huge (like several MBs), though.


No goose but the wing? Disappointing.


Oh no, I can't believe I missed that!

I think I like the wing for the phoenix combinator actually. What other combinator could the goose be matched with? Hmm...


Perhaps the authors didn't want decades of people being confused between swans and geese, like they are between 0 and O.




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

Search: