Idiomatic Monads in Rust
A pragmatic new design for high-level abstractions Monads (and, more generally, constructs known as “higher kinded types”) are a tool for high-level abstraction in programming languages1. Historically, there has been a lot of debate inside (and outside) the Rust community about whether monads would be a useful…
How Many Type Parameters Can a Java Method Have?
and this made me wonder how many type parameters a method could have. As far as I can tell, the Java Language specification says nothing about this question. 1
Alan Kay and OO Programming
Dr. Alan Kay invented the term "OO Programming", but he states that modern OO programming isn't what he meant. What did he mean?
Notes on Type Layouts and ABIs in Rust
Over the years I’ve found myself with a weird amount of knowledge about how types and ABIs in Rust work, and I wanted to write it all down in one place so that… it’s written down in one place. Much of this information can or should be found in the Rust Language Reference and the Rustonomicon .
Crafting Interpreters: Calls and Functions
Any problem in computer science can be solved with another level of indirection. Except for the problem of too many layers of indirection.
UTF-8 String Indexing Strategies
When designing or, in some cases, implementing a programming language with built-in support for Unicode strings, an important decision must be made about how to represent or encode those strings in memory. Not all representations are equal, and there are trade-offs between different choices.
R is a joy if you treat it like Awk
Derek's Personal Portfolio/Blog
Compiler Basics: LLVM
Writing a lisp compiler from scratch in JavaScript: 3. LLVM
Initialization in C++ is Seriously Bonkers
I was recently reminded of why I think it’s a bad idea to teach beginners C++. It’s a bad idea because it is an objective mess—albeit a beautiful, twisted, tragic, wondrous mess. Despite the current state of the community, this post is not a polemic against modern C++. This post is partly a follow-up on Simon Brand’s…
A tiny language called Z (2013)
A tiny, strict, impure, curried, dynamically typed (although that may change), partially applied language with rather peculiar syntax.
How an Optimizing Compiler Works
Optimizing compilers are a mainstay of modern software: allowing a programmer to write code in a language that makes sense to them, while transforming it into a form that makes sense for the underlying hardware to run efficiently. The optimizing compiler's job is to figure out what your input program does, and create…
Client-side web programming in Haskell: A retrospective
At the beginning of this decade (2010), a few of us Haskellers were exploring how best to do client-side web programming. We didn’t want to write JavaScript. There’s a surprising number of techniques we tried to avoid doing so. There was work coming from academia and industry. Here’s a history of my own experience in…
Static Type Checking in Common Lisp
There is a misconception that Lisp is a dynamically typed language and doesn’t offer compile-time type checking. Lisp being the…
Rust as the New C Part 1: Building and Combining Native Libs into C API
Evaluating Rust as the common denominator of modern development
Go 1.13: xerrors
Part of the Go 2 series of language changes is a new error inspection proposal .
McCarthy's Ambiguous Operator (2005)
Random code snippets, projects and musings about software from Eric Kidd, a developer and occasional entrepreneur.
“Essentials of Garbage Collectors” full course is now available
Course overview Memory leaks and dangling pointers are the main issues of the manual memory management. You delete a parent node in a linked list, forgetting to delete all its children first -- and your
A Guide to Rust Graphics Libraries as of 2019
You are seeing this because the administrator of this website has set up Anubis to protect the server against the scourge of AI companies aggressively scraping websites . This can and does cause downtime for the websites, which makes their resources inaccessible for everyone.
A whirlwind tour of object-oriented code in F# (2012)
A whirlwind tour of object-oriented code in F#
J can look like APL or English
J 1 is a concise, interpreted array programming language which looks infamously like line noise. It is the successor to APL , which is a concise, interpreted array programming language which looks infamously like hieroglyphics.