Hacker News post about this: https://news.ycombinator.com/item?id=39309783 (source available)
8 points
Creating basic functionality for the language always leads to unreadable code.
The C++ version would be much, much worse, and the Lisp version is Lisp.
3 points
Agree. What I linked provides core type support for that library. The pipe one is just a bunch of overloads to support a specific way of handling function composition to appease the TypeScript type checker.
There are a lot of typing hacks in that library to simulate higher kinded types.