Show HN: Katharos Functional programming and CSP-style concurrency for Python
1–9 of 9 posts
Re: Show HN: Katharos Functional programming and CSP-style concurrency for Python
#2Re: Show HN: Katharos Functional programming and CSP-style concurrency for Python
#3I've been working on Katharos, a functional programming and concurrency library for Python 3.13+. The idea behind it is simple: absence, errors, effects, and concurrent communication should be explicit, composable values instead of hidden control flow.
Am I missing something?
Re: Show HN: Katharos Functional programming and CSP-style concurrency for Python
#4I've been working on Katharos, a functional programming and concurrency library for Python 3.13+. The idea behind it is simple: absence, errors, effects, and concurrent communication should be explicit, composable values instead of hidden control flow.
Re: Show HN: Katharos Functional programming and CSP-style concurrency for Python
#5Re: Show HN: Katharos Functional programming and CSP-style concurrency for Python
#6Re: Show HN: Katharos Functional programming and CSP-style concurrency for Python
#7It's probably worth being up front about what your do syntax actually does. A generator is not as general as "do", Python doesn't have call/cc or anything like that. I checked and you (or Claude I guess) do it by rerunning the whole thing each time for things like the list monad which is not something I think anyone would want for anything more than a toy.
The goal is more correctness and fluent declarative readability to get business stuff done better, faster and cheaper
Re: Show HN: Katharos Functional programming and CSP-style concurrency for Python
#8I've been working on Katharos, a functional programming and concurrency library for Python 3.13+. The idea behind it is simple: absence, errors, effects, and concurrent communication should be explicit, composable values instead of hidden control flow.
As someone intimately familiar with Python and not so much with "algebraic abstractions", I looked at your examples and can't figure out how they work (and why the abstraction is useful). Am I missing something?