···2626**Duration:** ~2-3 hours total
2727**Prerequisites:** Basic TypeScript knowledge
28282929-| Chapter | Topic | What You'll Learn |
3030-|---------|-------|-------------------|
3131-| 1 | Why Functional TypeScript? | The problem with exceptions, errors as values |
3232-| 2 | Your First Effect | Creating, running, and transforming effects |
3333-| 3 | Typed Errors with Result | Ok/Err pattern, error composition |
3434-| 4 | Optional Values with Option | Some/None, avoiding null checks |
3535-| 5 | Pattern Matching | Exhaustive matching, type narrowing |
3636-| 6 | Branded Types | Distinct types from primitives |
3737-| 7 | The Effect System | Eff type, lazy evaluation, composition |
3838-| 8 | Concurrency with Fibers | Fork, join, race, cancellation |
3939-| 9 | Dependency Injection | Environments, provide, access |
4040-| 10 | Building a Complete App | Putting it all together |
2929+| Chapter | Topic | What You'll Learn |
3030+|---------|-----------------------------|-----------------------------------------------|
3131+| 1 | Why Functional TypeScript? | The problem with exceptions, errors as values |
3232+| 2 | Your First Effect | Creating, running, and transforming effects |
3333+| 3 | Typed Errors with Result | Ok/Err pattern, error composition |
3434+| 4 | Optional Values with Option | Some/None, avoiding null checks |
3535+| 5 | Pattern Matching | Exhaustive matching, type narrowing |
3636+| 6 | Branded Types | Distinct types from primitives |
3737+| 7 | The Effect System | Eff type, lazy evaluation, composition |
3838+| 8 | Concurrency with Fibers | Fork, join, race, cancellation |
3939+| 9 | Dependency Injection | Environments, provide, access |
4040+| 10 | Building a Complete App | Putting it all together |
41414242---
4343···45454646Deep-dives into specific topics when you need more detail.
47474848-| Article | Description |
4949-|---------|-------------|
5050-| [Why Errors as Values?](./concepts/errors-as-values.md) | The exception problem, railway oriented programming |
5151-| [Branded Types In Depth](./concepts/branded-types.md) | Phantom types, smart constructors, production patterns |
5252-| Typestate Pattern | State machines in the type system |
5353-| Effect Composition | Building complex effects from simple ones |
5454-| Fiber Internals | How the runtime works under the hood |
5555-| Dependency Injection Patterns | Testing, layered environments |
5656-| Testing Strategies | Unit testing effectful code |
4848+| Article | Description |
4949+|---------------------------------------------------------|--------------------------------------------------------|
5050+| [Why Errors as Values?](./concepts/errors-as-values.md) | The exception problem, railway oriented programming |
5151+| [Branded Types In Depth](./concepts/branded-types.md) | Phantom types, smart constructors, production patterns |
5252+| Typestate Pattern | State machines in the type system |
5353+| Effect Composition | Building complex effects from simple ones |
5454+| Fiber Internals | How the runtime works under the hood |
5555+| Dependency Injection Patterns | Testing, layered environments |
5656+| Testing Strategies | Unit testing effectful code |
57575858---
5959···61616262### When to Use What
63636464-| Problem | Solution |
6565-|---------|----------|
6666-| "This function can fail" | `Result<T, E>` |
6767-| "This value might not exist" | `Option<T>` |
6868-| "I need to do async work" | `Eff<A, E, R>` |
6969-| "I don't want to mix up IDs" | `Branded<T, B>` |
7070-| "I need to inject dependencies" | `provide()` / `access()` |
7171-| "I need timeout/retry/cancellation" | Effect combinators |
6464+| Problem | Solution |
6565+|-------------------------------------|--------------------------|
6666+| "This function can fail" | `Result<T, E>` |
6767+| "This value might not exist" | `Option<T>` |
6868+| "I need to do async work" | `Eff<A, E, R>` |
6969+| "I don't want to mix up IDs" | `Branded<T, B>` |
7070+| "I need to inject dependencies" | `provide()` / `access()` |
7171+| "I need timeout/retry/cancellation" | Effect combinators |
72727373### Import Patterns
7474
+9-9
docs/guides/concepts/README.md
···115115116116## Quick Concept Reference
117117118118-| Concept | One-Liner |
119119-|---------|-----------|
120120-| Result | Errors as values, not exceptions |
121121-| Option | Nullable values without null |
122122-| Branded Types | Distinct types from primitives |
123123-| Typestate | State machines in the type system |
124124-| Effect | Lazy, composable, typed async |
125125-| Fiber | Lightweight thread with cancellation |
126126-| Environment | Dependencies as a type parameter |
118118+| Concept | One-Liner |
119119+|---------------|--------------------------------------|
120120+| Result | Errors as values, not exceptions |
121121+| Option | Nullable values without null |
122122+| Branded Types | Distinct types from primitives |
123123+| Typestate | State machines in the type system |
124124+| Effect | Lazy, composable, typed async |
125125+| Fiber | Lightweight thread with cancellation |
126126+| Environment | Dependencies as a type parameter |
127127128128---
129129