A similar "framework", very robust and used in production systems, is dry-python's one[0][1].<p>The approach taken is a bit different I think, since they rely heavily on `mypy` plugins to reach type safety and functional constructs otherwise impossible to get, without runtime inspections.<p>0: <a href="https://github.com/dry-python" rel="nofollow">https://github.com/dry-python</a>
1: <a href="https://github.com/dry-python/returns" rel="nofollow">https://github.com/dry-python/returns</a>
Really nice project! I’ve been looking for something like this, and typically end up building a very minimal version of it for projects. Are you looking for help or contributors? Would love to contribute if possible.
I want a similar toolkit that lifts over the Ruby/Groovy/Kotlin style functions like countBy, groupBy, sortBy, collate, etc etc. Programming in Python is such a chore without these higher level collections APIs and for some reason (I guess, list comprehensions being considered idiomatic, bare bones itertools being considered "good enough", and the lack of real inline closures?) it doesn't seem like they'll ever be part of Python proper. But I still want them.
Nice. One question I have is does the compose operator preserve error messages, allow you to pinpoint which function raised an exception etc? That's the one issue I have w/ the `pipe` function from dry-python/returns; if you build a complex pipeline, the errors are somewhat inscrutable.
I was pretty puzzled by the method name "map" in the examples. Why would you call it "map" when there are no arrays or lists involved?