Lawful Asynchronous Programming
summary
Deep dive into scalaz-stream shows the current algebra hinges on an await node as free monad that makes effects omnipresent and causes real bugs: unpredictable tail-flipping and lost associativity, dropped error details, and very poor throughput (benchmarks show it is ~10x slower than Akka Streams). The library still guarantees finalizers and referential transparency, but the redesign (FS2 / 0.9) splits stream structure from effects, adds first-class stepping, becomes effect-agnostic (not locked to Task), and ships a normal form plus law tests.
AI-written summary · about
chapters (13)
- 0:00Start
- 2:22What is Async?
- 3:56What are laws?
- 24:24Referential Transparency
- 26:37File Manipulation
- 29:19Concurrency
- 32:49Finalizers
- 34:48Transduction
- 40:02What about effects?
- 42:37Complexity
- 43:50False Freedom
- 46:42Consequences
- 54:20Lessons
related talks
51mScalaz Streams A Functional Approach to Compositional...
43mThe Design of the Scalaz 8 Effect System
44mEffects, Algebraically yours ..
48mStreamly: Declarative Concurrency And Dataflow Programming In Haskell
29mLearning Scalaz
34mDIRECT STYLE SCALA
01h 01mLeaving side effects aside
44mCAN WE FREE CONCURRENT PROGRAMMING FROM THE MONADIC STYLE
