The Making of an IO
summary
Claims that a practical Scala IO must support three evaluation modes (strict, lazy, async), predictable thread-pool control and resource safety. Shows cats‑effect’s IO plus a single thread‑control primitive shift, an async constructor and laws and typeclasses that catch broken Future/Task semantics. Demonstrates async socket reads, explains why Scala’s Future and Scalaz Task leak resources and mix pools, and reports that the cats‑effect design composes with fs2/http4s and passes law‑based tests, i.e. it works in real systems.
AI-written summary · about
chapters (29)
- 0:00Introduction
- 1:33What is an IO
- 3:35Example
- 4:23IO monad
- 5:52Concurrency
- 8:12The IO monad
- 10:20Why is it a monad
- 13:37Haskell IO
- 14:05All Roads Lead to IO
- 16:07Scala vs Haskell
- 16:36Scala vs Java
- 18:46Problems with Scala
- 20:26Scala IO monads
- 23:00Scala IO candidates
- 23:10Future
- 26:57IO
- 29:11Lift IO
- 35:58Thread IO
- 39:26Task Concurrency
- 41:10Task
- 44:05Kats Effect
- 46:36Shift
- 47:41Abstraction
- 47:54Effects
- 48:19Sync
- 49:20Async
- 51:02Sync Test
- 52:16Generic IO
- 53:03Conclusion
related talks
55mUnwrapping IO: is it a path that you want to follow?
03mFlavio Brasil will be joining us at #LambdaConf2025
22mBook Of Monads: An Interview
58mThe Next Great Functional Programming Language
45mScala Meets GenAI - Build the Cool Stuff with LLM4S
56mIdris: Programming with Dependent Types
49mCoding Tomorrow
30mConversational Computing: How Okasaki proved McCarthy right again
