Here, watch this video.

Emily was an experimental programming language I made around 2015. The idea was to make a usable programming language using only functions. Variable assignment is a function. The number “3” is a function. Etc. How does that work? Well, the video above explains.

There’s a full written introduction here.

Emily was an experiment, but it works. You can write software with it. You can find the source repo here. There’s a “stable” branch with a version 0.2 and an “unstable” branch with a never-officially-released version 0.3, which had things like the ability to call out to C functions (I even wrote a little game in SDL with it!).

After this, I started work on an “Emily 2” that was meant to be less of an experiment and more of a practical thing you could use. This was never really finished but maybe I’ll come back to it someday. If you want to puzzle over it, there’s a repo here. The only Emily 2 program that has ever been written is an Emily 2 interpreter written in Emily 2.