Arrow 2.0's Trajectory
summary
A ten year journey condenses into concrete changes: Arrow removes higher‑kinded types and type classes (deprecated in 0.12, removed in 0.13), replaces Traverse with ordinary collections inside a unified DSL, and leverages context receivers so functions no longer return wrapper types. Binary size shrinks from 4.1 MB to about 400 kilobytes (≈10x), and migration uses openrewrite recipes to automate large refactorings. The claim is that these tools and metrics make functional Kotlin far more idiomatic and lightweight.
AI-written summary · about
chapters (22)
- 0:00Intro
- 1:03Arrow's 2.0 Trajectory
- 2:09Arrow's History
- 4:49Complexity of Higher-Kinded Types
- 7:25Complexity of FP
- 8:22Suspend to the rescue
- 10:12Wrapper specific code
- 10:51Embracing DSLS
- 11:58Traverse & co
- 13:28Traverse = map + bind
- 15:18DSLs and smart-contracts
- 16:40Idiomatic API names
- 17:38Context receivers
- 19:58DSLS everywhere
- 22:05Binary Size
- 23:47Evolving APIs
- 25:18IntelliJ
- 26:43OpenRewrite
- 29:43Documentation
- 30:19Migration Guide
- 31:06Eco System
- 31:55Community
related talks
50mState of the functional ecosystem in Kotlin: Mid 2018 checkup
27mLeveraging the power of Arrow
40mArchitecting Typed FP Applications & Libraries in Kotlin with Arrow
47mFunctional programming in Kotlin: exploring Arrow
25mArrow Meta - Enabling Functional Programming in the Kotlin Compiler
41mAn Arrow to the Kotlin
28mArrow Fx: Functional Domain Modeling with Kotlin
32mFrom Exception Hell to Typed Bliss: Real-World Error Handling with Kotlin and Arrow
