{ "@context":[ "https://www.w3.org/ns/activitystreams", {"Hashtag":"as:Hashtag","sensitive":"as:sensitive"}, {"toot":"http://joinmastodon.org/ns#","focalPoint":"toot:focalPoint"} ], "published":"2025-11-14T10:37:33.767Z", "attributedTo":"https://epiktistes.com/actors/toddsundsted", "replies":"https://epiktistes.com/objects/WkEodt6ag0c/replies", "to":["https://www.w3.org/ns/activitystreams#Public"], "cc":["https://epiktistes.com/actors/toddsundsted/followers"], "content":"

My post on using emoji in Crystal Language identifiers got some 🎉 attention. The obvious question was, how much further could I take a Crystal based solution? I played around with macros for a while to see how much syntax I could replace, but that path didn't go very far. Too much of the language, like block delimiters, showed through.

It turns out there is at least one programming language designed almost entirely around emoji—Emojicode. Emojicode is pretty cool and impressively complete, but because Emojicode is, at its core, a fairly traditional imperative language, it is difficult to keep the ASCII out. 🤔

I thought I could do better by modeling an emoji-based programming language on a stack-based language like Forth. 💡 Heavy use of recursion and the stack makes it easy to avoid naming things, which means ✨ less ASCII and more emoji ✨.

This ugly duckling defines a word (a function) that computes a factorial. The factorial word is the character ❗ (the syntax 📖❗ ... 📕 defines it as a new word). You can see that ❗ calls itself recursively, right?

💭 Factorial\n\n📖❗📚2️⃣⬇️❓👍🗑️1️⃣👎📚1️⃣➖❗✖️🔚📕\n\n🔢5❗😀   💭 120\n🔢10❗😀  💭 3628800

You can use spaces and line breaks to make things more readable, but a lot of Forth code kind of looks like this to me so 🤷.

There's already a small number of primitive words and a standard library of additional words. I'll probably play around with the core a bit more and then publish it.

Tower of Hanoi 🏯 works, too!

#emoji #forth #esolang

", "contentMap":{ "en-US":"

My post on using emoji in Crystal Language identifiers got some 🎉 attention. The obvious question was, how much further could I take a Crystal based solution? I played around with macros for a while to see how much syntax I could replace, but that path didn't go very far. Too much of the language, like block delimiters, showed through.

It turns out there is at least one programming language designed almost entirely around emoji—Emojicode. Emojicode is pretty cool and impressively complete, but because Emojicode is, at its core, a fairly traditional imperative language, it is difficult to keep the ASCII out. 🤔

I thought I could do better by modeling an emoji-based programming language on a stack-based language like Forth. 💡 Heavy use of recursion and the stack makes it easy to avoid naming things, which means ✨ less ASCII and more emoji ✨.

This ugly duckling defines a word (a function) that computes a factorial. The factorial word is the character ❗ (the syntax 📖❗ ... 📕 defines it as a new word). You can see that ❗ calls itself recursively, right?

💭 Factorial\n\n📖❗📚2️⃣⬇️❓👍🗑️1️⃣👎📚1️⃣➖❗✖️🔚📕\n\n🔢5❗😀   💭 120\n🔢10❗😀  💭 3628800

You can use spaces and line breaks to make things more readable, but a lot of Forth code kind of looks like this to me so 🤷.

There's already a small number of primitive words and a standard library of additional words. I'll probably play around with the core a bit more and then publish it.

Tower of Hanoi 🏯 works, too!

#emoji #forth #esolang

" }, "mediaType":"text/html", "attachment":[], "tag":[ {"type":"Hashtag","name":"#emoji","href":"https://epiktistes.com/tags/emoji"}, {"type":"Hashtag","name":"#forth","href":"https://epiktistes.com/tags/forth"}, {"type":"Hashtag","name":"#esolang","href":"https://epiktistes.com/tags/esolang"} ], "type":"Note", "id":"https://epiktistes.com/objects/YrYEmaFYHVY" }