Intuiting Pratt Parsing
You already know that a + b * c + d is calculated as a + (b * c) + d. But how do you encode that knowledge precisely enough for a machine to act on it?
Topics /
The most popular blog posts about programming languages on Hacker News. 233 posts.
You already know that a + b * c + d is calculated as a + (b * c) + d. But how do you encode that knowledge precisely enough for a machine to act on it?
Library maintainers may feel overwhelmed by the plurality of type checkers that exist. We offer some guidance on how to focus their efforts where they matter most.
Welcome to all Camleers We are back with another practical walkthrough for the newcomers of the OCaml ecosystem. We understand from the feedback we have gathered over the years that getting started with the OCaml Distribution can sometimes be perceived as challenging at first. That's why we keep it ...
Erlang's mailbox design is more disciplined than Go's channels: only the owning process can read from a mailbox, and sends are asynchronous. Yet the four failure modes of shared mutable state still show up, just in different shapes.
Zig is a general-purpose programming language and toolchain for maintaining robust , optimal , and reusable software.
Modern tooling for parsing, searching, formatting, editing R code, just like for other programming languages.
By rearchitecting the Images binding, we accidentally uncovered a bug that existed in the open-source hyper library across multiple major versions.
Lately I've been spending time learning Scheme and using it to implement the concepts I'm learning in my physics classes as time permits. One of the most exciting things I've been doing with this is getting my Scheme to compile to the Web thanks to Hoot. One of the biggest challenges has been the fact that Hoot is…
Ok, the title is a tongue-in-cheek, but there's very little thought put into files in most languages. It always feels a bit out of place... except in C. In fact, what you get is usually a worse version of C.
Technical articles and release notes about Symbolica, symbolic computation, numerical methods, and high-performance computer algebra.
I don't remember where the idea came from, but I decided that it would be cool if I could write websites using a stack-based language. Something like this: : h1 ( s -- ) "<h1>" emit . "</h1>" em…
Paul Khuong's personal blog. Some Lisp, some optimisation, mathematical or computer.
japanese verbs are awesome. you can take the dictionary form of a verb (for example, "taberu", to eat) and turn it into many forms: taberu ("eat"): tabemasu…
TL;DR: I believe Odin's inline assembly is currently the best out of any language.The most important aspects are of this article listed below. I am not aware of any other assembly (GCC/Clang/Rust/Go...) that would combine all of these aspects:Inline assembly is organized into "templates", similar to and callable as…
_posted by Stephen De Gabrielle and John Clements_ We are pleased to announce Racket v9.1 is now available from https://download.racket-lang.org/. As of this release:: Documentation organization and navigation can be specialized by language family, to...
In the previous article we explored how Go’s memory allocator manages heap memory — grabbing large arenas from the OS, dividing them into spans and size classes, and using a three-level hierarchy (mcache, mcentral, mheap) to make most allocations lock-free. A key detail was that each P (processor) gets its own memory…
The four-pane System Browser has shaped Smalltalk development for forty years. It’s still brilliant at providing context. But the real problem may not be the browser itself—it may be the lack of composition between the tools that surround it.
I have a huge appreciation for the Scheme programming language. I just seem to be unable to get it to stick in my head. This seems like a huge revelation for someone who named their blog after the Scheme textbook, but there it is. This post is the public admission I need to make, to...
A blog about computers, functional languages, Lisp, and Scheme.
It's not my favorite language
Transducers are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, they can be used in many different…
A false dichotomy that hides the real request
In the article about Standard Library hardening, we looked at checks for invalid Standard Library container access and other broken preconditions. I mentioned that those requirements are expressed in terms of “contracts”. But what about our code? In this post, we’ll explore contracts from C++26. We’ll start with a…
A deep dive into converting a simple arithmetic expression into a binary tree, leading to a custom language in C.
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
`foldl` and `foldr` can be confusing, so let's work out what's up
There are many interesting, useful, and fun C libraries in the software ecosystem. While one could go and rewrite these libraries in Swift, usually there is no need, because Swift provides direct interoperability with C. With a little setup, you can directly use existing C libraries from your Swift code.
A draft design document describing lightweight userland cooperative threads for SBCL.
In my previous post I talk about how I got rid of hundreds of thousands of lines of Objective-C code while at Audible and I explain why keeping Objective-C code around is a terrible idea. And I explain that…