raganwald.com @raganwald.functional.cafe.ap.brid.gy · 16/10/2026A "construction" is how you make a new combinator out of existing combinators. This one expects two quoted values—"A" and "B"—and processes them with the commented combinators shown. The Euclidean Division combinator is provisionally named a "construction." […] [Original post on functional.cafe] 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 16/10/2026The M combinator (aka “Mockingbird”) in action: The Mockingbird and Sage Bird (Y Combinator) are Computer Science’s primordial implementations of recursion. tunes.org/~iepos/joy.html Here we are implementing Euclidean Division in concatenative […] [Original post on functional.cafe] 112 2
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 08/10/2026Hand-written tests for porting boolean operators from the Lambda Calculus and/or Smullyan Forest to Concatenative Combinators. Yet another reminder to... “Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy.”—Dr. Alan J. Perlis, 1982 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 30/09/2026A naïve first working predecessor for the applicative Church numerals in concatenative combinators: 001 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 29/09/2026CoffeeScript Ristretto is a short book about a programming language that is intentionally small. It was inspired by "The Little Lisper" and "SICP," books that could not be written about Java, JavaScript, or TypeScript. raganwald.com/assets/books/coffeesc… 042 4
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 19/09/2026Practical Use Cases of the K-combinator (Kestrel) in JavaScript: Real-World Examples and Implementation www.xjavascript.com/blog/practical-… 001 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 18/09/2026The “Church of Z” now supports product, sum, and exponentiation combinators. en.wikipedia.org/wiki/Church_encodi… 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 18/09/2026As delightfully shown in Raymond Smullyan’s classic “To Mock a Mockingbird,” if a combinatorial forest has both a starling and a kestrel, it also has every other combinatorial bird: archive.org/details/tomockmockingbi… And as go […] [Original post on functional.cafe] 201 2
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 18/09/2026This is, of course, a game in the same game theory family as “The Prisoner’s Dilemma.” North American roads are the board for an n-player “Arms Race.” archive.org/details/prisonersdilemm… 011 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 16/09/2026Church numerals in concatenative combinators have begun to manifest themselves. 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 14/09/2026The inner implementation of a base concatenative combinator, `cons`: 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 03/09/2026“The string is a stark data structure and everywhere it is passed there is much duplication of process. It is a perfect vehicle for hiding information.” —Epigrams in Programming by Dr. Alan J. Perlis (1982) www.cs.yale.edu/homes/perlis-alan/q… 120 2
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 08/07/2026Exploring Regular Expressions and Finite-State Recognizers… By implementing constructive proofs in code. Part I: raganwald.com/2019/09/21/regular-ex… Part II: raganwald.com/2019/12/17/regular-ex… 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 28/06/2026I'm busy with Balanced Parentheses, but just as APL was opinionated about using characters that weren't available on every English language keyboard, is there an esolang the depends upon Susan Kare's “Cairo” font from 1984? 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 16/06/2026"This esolang of yours, I presume you brought your favourite JavaScript features over?" Well, I dunno about ✌🏽favourite✌🏽, but yeah, its lists can and often do have holes in them. 050 5
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 13/06/2026No good can come of slouching towards an esolang with cons cell semantics and lots of idiotic silly parentheses that aren't actual S-expressions. 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 09/06/2026TFW the least authoritative person you know is cited as a source by AI. 110 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 23/02/2026Espresso Ristretto. I miss CoffeeScript, I was very fond of that language and the lovely experience of working with CoffeeScript, Backbone, and even jQuery during a time when interfaces were considerably more CRUD-forward. raganwald.com/assets/books/coffeesc… 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 12/02/2026A very famous cover illustrated by Robert Frank Tinney (1947 - 2026). The mass adoption of OOP was the result of many interlocking changes, but this cover of this issue of Byte Did a great deal to popularize Smalltalk and contemporaneous OO languages. Not […] [Original post on functional.cafe] 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 16/01/2026JavaScript Allongé was written in this converted semi-detached cottage. 010 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 16/01/2026Life, coffee, and blueberry pie. conwaylife.com/book 020 2
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 05/12/2025Although many people say that JavaScript Allongé is a book about functional programming, it’s actually a book about how functions as first-class entities facilitate composition. So... Although Kleisli arrows allow for the composition of functions that work […] [Original post on functional.cafe] 010 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 03/12/2025A personal favourite. And yes there *is* a Mister Braithwaite in “Enter the Dragon!” raganwald.com/2011/11/01/williams-m… 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 24/11/2025At the turn of the century, OG blogger Joel Spolsky posited the "Joel Test," twelve simple yes/no questions that defined a reasonable-by-the-standards-of-the-day local optimum for shipping software. Some seem ridiculously obvious today, but weren't standard […] [Original post on functional.cafe] 110 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 08/11/2025A Brutal Look at Balanced Parentheses, Computing Machines, and Pushdown Automata raganwald.com/2019/02/14/i-love-pro… 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 08/11/2025Forget algebraic types, the Type Lords use Gallifrean types. 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 06/11/2025There are two ways to write production #TypeScript. One is to use such advanced type features that if it compiles at all, you can be sure there are no obvious bugs. The other is to write such straightforward, extremely simple types that there are obviously no bugs. Only a third method works. 221 2
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 27/10/2025JavaScript Allongé follows this pattern: raganwald.com/assets/books/javascri… The very first version was written before ES2015. Its purpose was to discuss programming with first-class functions and composition. To do that, it had to […] [Original post on functional.cafe] 100 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 13/08/2025A long time ago, in a ruby-encrusted galaxy far, far away... raganwald.com/assets/books/kestrels… 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 04/08/2025My first type-level TypeScript Y Combinator good enough to criticize: gist.github.com/raganwald/6558ddfd7… 001 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 04/08/2025For the tenth time: en.wikipedia.org/wiki/Greenspun%27s… 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 30/07/2025A type-level TypeScript implementation of the Mockingbird. The Why Bird and Jackson’s Widowbird are next... 012 2
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 26/07/2025“[Structure and Interpretation of Computer Programs] wasn't really about Scheme; I think a lot of the point of using Scheme (as I understood it) is that the language is so minimalist and so beautiful that even this first intro course can be about fundamental […] [Original post on functional.cafe] 001 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 15/07/2025The SNOBOL4 Programming Language, also known by its fans as “The Green Book:” raganwald.com/assets/books/snobol-g… 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 23/06/2025“...We’re done. And this is a win over the typical recursive or even iterative solution for large numbers, because while each operation is more expensive, we only perform log2n operations.” —An ES6 function to compute the nth Fibonacci number (2015) […] [Original post on functional.cafe] 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 19/06/2025In 1972, John Horton Conway invented the FRACTRAN programming language to show that a generalization of the Collatz problem is algorithmically undecidable. He showed that this generalized form is equivalent to FRACTRAN programs, and also that FRACTRAN […] [Original post on functional.cafe] 010 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 09/06/2025The SNOBOL4 Programming Language, also known by its fans as, “The Green Book:” raganwald.com/assets/books/snobol-g… 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 06/06/2025In 2004, Matthew Cook proved that the Rule 110 elementary cellular automaton is universal. His construction began with the existing proof that Post Tag Systems are universal, then introduced a variation, the Cyclic Tag System, which he showed is equivalent to […] [Original post on functional.cafe] 001 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 31/05/2025“DNA does not have one strand for animals, another for cats, and a third for jaguars. It does not compose these specializations together to produce the final specimen individual. DNA is a chaotic, unstructured mess. Einstein once said that “God does not play […] [Original post on functional.cafe] 010 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 29/05/2025👆🏽 “A “purely functional” approach to composing functionality is appropriate when we wish to compose behaviour with classes, but do not wish to mutate a class that is used elsewhere. One approach is to extend the class into a subclass, and mix behaviour into […] [Original post on functional.cafe] 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 29/05/2025👆🏽 “As a general rule, it’s best to have things behave as similarly as possible in the domain code, and this sometimes does involve some extra complexity in the infrastructure code. But that is more of a guideline than a hard-and-fast rule, and for this […] [Original post on functional.cafe] 101 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 29/05/2025“Prototypes in JavaScript are “just objects,” and since they are “just objects,” we can add, remove, or modify methods of the prototype by adding, removing, or modifying the functions bound to properties of the prototype.” —Prototypes are Objects (and why […] [Original post on functional.cafe] 100 1
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 28/05/2025“CoffeeScript Ristretto (2014) is a book about programming with functions that uses the CoffeeScript programming language for the examples and exercises. “CoffeeScript Ristretto's primary focus is functions as first-class values and advanced topics built on […] [Original post on functional.cafe] 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 25/05/2025“The command pattern was popularized by the 1994 book Design Patterns: Elements of Reusable Object-Oriented Software. But it’s 2016. Why do we care? Why is it worth another look?” —The annotated presentation of “First-Class Commands, an unexpectedly fertile […] [Original post on functional.cafe] 000 0
raganwald.com @raganwald.functional.cafe.ap.brid.gy · 20/05/2025Why Y? Deriving the Y Combinator in JavaScript (2018) “After a brief review of the work we’ve already done on the Mockingbird, we’ll derive the Why Bird, known most famously as the Y Combinator. The why bird provides all the benefits of the mockingbird, but […] [Original post on functional.cafe] 000 0