This post was written for Day 8 of the Racket Advent Calendar. “#lang” is a Racket term referring to declaring the programming language in use, and this post uses Racket as a platform to discuss one approach to writing good programming languages. I’ve made an effort to explain the Racket-specific ideas as they are introduced, so if you are interested in language design but aren’t a Racketeer, I hope you’ll still read it and that you’ll find it interesting.| Terminally Undead
I recently wrote about using first-class functions to help make a BF interpreter. This is a follow-up post to describe a nifty solution to a tricky problem that made my program go 2–5× faster and put it about on-par with an interpreter written in pure C. A basic interpreter works by walking down the AST and evaluating nodes recursively: when the interpreter encounters an expression, it dispatches on the type of expression to decide how to perform the evaluation. Here’s the key insight to...| Lambda Land
So, you’ve written a Racket library and now you’d like to make it widely available. How to go about it? This post documents a widely used (yet apparently undocumented) best practice.| Terminally Undead
When we say something like 5 + 3, we aren’t usually surprised to learn that we are speaking of 8. And when we write this as a program for a machine to execute, we expect it to evaluate this expression to 8 as well. Everyone is familiar with the sign + since we all learned it in elementary school, and we know what happens when we add two numbers together.| Terminally Undead
As a Racket developer, if you’ve been running tests and code coverage on your GitHub repos using Travis (for instance, via Greg Hendershott’s travis-racket), you will eventually discover (as I did a few days ago) that Travis is no longer free for open source projects, as it once was. An unfortunate turn of events. In response, the trend among open source developers seems to be to migrate to Github Actions, a free, disturbingly convenient, and admittedly good option, from what I can tell.| Terminally Undead