Crafting Interpreters: Strings
“Ah? A small aversion to menial labor?” The doctor cocked an eyebrow. “Understandable, but misplaced. One should treasure those hum-drum tasks that keep the body occupied but leave the mind and heart unfettered.”
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 3,709 posts.
“Ah? A small aversion to menial labor?” The doctor cocked an eyebrow. “Understandable, but misplaced. One should treasure those hum-drum tasks that keep the body occupied but leave the mind and heart unfettered.”
Hey, if all I have is lemons – I have no choice but to make lemonade out of them! if reproducible serious bugs are ignored for many months, it indicates one ...
Monads and macros have an almost gnostic mystique about them. Why is that? Why does hardly anyone use both?
Exploring Lisp's fine-grained type hierarchy.
It’s has been an absolute pleasure 2 working with Chouser 3 and our army of Manning 4 editors and proofreaders. I would also like to thank Christophe Grand for his excellent 5 technical review. Additionally, I would like to thank Steve Yegge for writing the foreword and providing insightful feedback 6 that I believe…
A somewhat compact implementation of the awk programming language
The first of a series of envisioned blog posts on lambda calculus, and Lisp. It’s unclear exactly where to start: there is a whole heap of interesting issues, both theoretical and in terms of concrete implementations, which tangle and interconnect. A particular application of lambda calculus is a very salient…
It’s hard to believe that its been more than 3 years since I opened RFC 2000 , which defined the const generics for Rust. At the same time, reading the RFC thread, there’s also been a huge amount of change in this area: for one thing, at the time the RFC was written, const fns weren’t stable, and consts weren’t even…
The execution of a program unfolds over some interval of time. The lifetime of every temporary resource (e.g., variable or object) is the time span between that resource’s “creation” and “destruction”. This lifetime is wholly contained within the typically-longer lifetime of the program.
The craft of programming is almost universally concerned with different types of data and operations/algorithms that act on this data [1] . Therefore, it's hardly surprising that designing abstractions for data types and operations has been on the mind of software engineers and programming-language designers since…
Why unsafe Rust is a complex and user unfriendly experience.
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
How (and why!) to convince the machines to write lenses for you
Three years ago, I downloaded the nascent Scala.js compiler and tried to use it on a toy project.
Latches and barriers are coordination types that enable some threads to wait until a counter becomes zero. You can use a std::latch only once, but you can use a std::barrier more than once. Today, I have a closer look at latches.
Type safety is the property of a programming language, ensuring its programs are well defined and creating a foundation for reasoning.
Given a string, get a truncated string of length up to 12. The task is ambiguous, as it doesn't say anything about whether or not 12 shou...
When I kicked off my startup HubSpot over 4 years ago June 2006 I wrote a set of articles on the topic of choosing a language/platform specific
From The Archives: This article is one of the all-time most popular posts from my previous blog Graham Hacking Scala. I thought it worth updating and re-printing it here. It’s a pretty widely-accepted view that, as a programmer, learning new … Continue reading →
Anyone trying to make a new mainstream language is completely insane, unless they're backed by a large corporation. 0
If you are an Emacs user with a keen eye, you will have noticed that in Emacs Lisp, code is data. After all, 'Lisp' is shorthand for 'List Processing'. One of E...