I think there's amazing benefit in being inspired by Haskell and studying category theory, I really do.

However, I think those lessons should be taken with a grain of salt and our code should be "inspired by" and not "a direct expression of". I think Haskell makes the mistake of attempting a direct expression of category theory in programming and it's honestly pretty terrible.

Writing C++ that's inspired by CT is entirely different. CT gets you to think of programming as a pure type transformations in a pipeline and this is surprisingly powerful. C++ just has the advantage that it allows you to write efficient functionally-inspired code.

Haskell's type system is pretty top-notch though, I must admit. But ultimately, it's readily expressible using C++'s current class system. Granted, I've never really written any OO C++.