I’m having a lot of fun writing my new library
xerocross.fu. It’s on GitHub at https://github.com/xerocross/fu. I deprecated xerocross/xerocross.functional-util in favor of this new name. I said it before, but I’ll repeat this: it’s my first library written in TypeScript. But that is not the point. The point is that it is a library of utility functions written in the functional programming style. If you are curious, I encourage you to look at the source code. The functions never mutate input data. Never. They return new data. And the underlying logic of each function is typically based on recursion. A function based on recursion lends itself to being proved mathematically using mathematical induction. One of the main goals of this library is to prove each function mathematically.
I am a mathematician. For real. I hold a PhD in mathematics from a major university. But this exercise has taught me something new about writing proofs. Basically: writing a proof works much better when you have a mindless computer checking your logic. I wonder how much illogical crap I wrote because I didn’t have my logic checked by a computer.