Should C++ generalize the ; operator to other monads?
Steve Downey
TIL a trick I wish I knew ages ago.
You can add more than one Push url to a git remote. So you can have a remote named "all" that can push to all the places you mirror your pushes to.
For me, github and a local gitea instance named `mimir`.
A strange mix of fear and joy.
I just deliberately killed Chrome and when I restarted just closed the dialog box asking if I wanted to restore all my tabs.
In the midst of what I'm really working on for C++Now, I noticed I have a typelevel fixpoint combinator for 0 overhead recursive data types, because std::indirect is a good Box.
Expression evaluators for free now.
Compiler Explorer https://godbolt.org/z/T1G4zzd1o via @compiler_explorer@hachyderm.io
ITS A CROSS BETWEEN TWILIGHT IMPERIUM AND CONES OF DUNSHIRE, BUT IMPLEMENTED ENTIRELY IN CATEGORY THEORY.
EVERY CONE A MONAD, AND...
Note to self: laptop charges much faster when all the cables and bricks are plugged in.
Algorithms for Trees -- Foldable, Applicative, Traversable accepted for C++Now 2026.
Fingertree as the motivating example, but the algorithms are adaptable to any tree with a handful of functions you define.
Looking forward to Aspen in May!
Git linear history is a recommendation to disguise the real reasons for change for code, and to lie about the true history of the code.
All of the commits on `main` should be signed merges.
All commits on `main` are production code.
At the C++ Standard meeting in Croydon.
No live tooting permitted.
News to be reported next Saturday.
RIP Tony Hoare, March 5 2026, age 92
https://blog.computationalcomplexity.org/2026/03/tony-hoare-1934-2026.html?m=1
A small snippet of code to mark up source code for transclusion into a presentation, and an example project that builds a (micro-tiny) C++ library, tests it, and generates an html page with snippets of code using emacs.
May it be of some use.
A new idea *for me* that I'm working out about the new sender receiver model in C++26.
It's based on chaining function calls, and the call itself is an operational state, including the return value. By construction operational states are constructed exactly once (it's an object) and are completed exactly once in one of three ways, value, error, or by stopping when asked to cancel. Or one might never, because it infinite loops, I suppose.
Duh.
If you want to be able to push a `git subtree` back upstream, you can't squash the pull into your repo.
Obvious, now.
Still better than `git submodule`.
This morning's ridiculous new (very old) language feature:
`continue func(x, y, z);`
Transfer control to func, and return what func returns to the caller of this scope.
`return` only as a continuation and not a subroutine.
I spent more than an hour because the string I was formatting is used by something else as format-spec, and it was HTML with lots of % and ".
Yay.
"A question starts with Who, What, Where, When, Why, or How and goes up at the end."
"If it's more of a comment, hold that for a moment."
TFW each slide could be an entire talk, and there are a *lot* of slides.
F-algebras and type fixpoint in C++26 for recursive types like expression trees is almost a drive by example.
But, by Crom, I have Traversable, which is what Applicative is for. And open extension and retro-fit.
@foonathan@fosstodon.org Doesn't compile yet on the working branch is a weird place to commit. Tests fail a little less so?
New Test Case
Test Passes
Refactor working code
Merge commit on feature branch
Integrate main merge on feature branch
Fix failing tests
Merge commit on main
Is good history when you need to look at the history of some code.
