1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# Summary
[Introduction](./introduction.md)
# Part I: Foundations
- [Why Effects?](./part1/ch01-00-why-effects.md)
- [Challenges in Large Async Codebases](./part1/ch01-01-challenges-in-large-async-codebases.md)
- [What Even Is an Effect?](./part1/ch01-02-what-is-an-effect.md)
- [The Three Type Parameters](./part1/ch01-03-type-parameters.md)
- [Laziness as a Superpower](./part1/ch01-04-laziness.md)
- [Your First Effect](./part1/ch02-00-first-effect.md)
- [Creating Effects](./part1/ch02-01-creating-effects.md)
- [Transforming Success](./part1/ch02-02-transforming.md)
- [Chaining Effects](./part1/ch02-03-chaining.md)
- [Your First Real Program](./part1/ch02-04-real-program.md)
- [The effect! Macro](./part1/ch03-00-effect-macro.md)
- [Why Do-Notation Exists](./part1/ch03-01-why-do-notation.md)
- [The ~ Operator Explained](./part1/ch03-02-bind-operator.md)
- [Error Handling Inside effect!](./part1/ch03-03-error-handling.md)
- [When Not to Use the Macro](./part1/ch03-04-when-not-to-use.md)
# Part II: Environment & Dependencies
- [The R Parameter](./part2/ch04-00-r-parameter.md)
- [R Revisited](./part2/ch04-01-r-revisited.md)
- [Providing Dependencies](./part2/ch04-02-providing.md)
- [Widening and Narrowing](./part2/ch04-03-widening-narrowing.md)
- [R as Documentation](./part2/ch04-04-r-as-docs.md)
- [Tags and Context](./part2/ch05-00-tags-context.md)
- [The Problem with Positional Types](./part2/ch05-01-positional-problem.md)
- [Tags](./part2/ch05-02-tags.md)
- [Context and HLists](./part2/ch05-03-context-hlists.md)
- [Get and GetMut](./part2/ch05-04-get-getmut.md)
- [Layers](./part2/ch06-00-layers.md)
- [What Is a Layer?](./part2/ch06-01-what-is-layer.md)
- [Building Layers](./part2/ch06-02-building-layers.md)
- [Stacking Layers](./part2/ch06-03-stacking.md)
- [Layer Graphs](./part2/ch06-04-layer-graphs.md)
- [Services](./part2/ch07-00-services.md)
- [Service Traits](./part2/ch07-01-service-traits.md)
- [ServiceEnv and service_env](./part2/ch07-02-service-env.md)
- [Providing Services via Layers](./part2/ch07-03-providing-services.md)
- [A Complete DI Example](./part2/ch07-04-complete-example.md)
# Part III: Real Programs
- [Error Handling](./part3/ch08-00-error-handling.md)
- [Beyond Result](./part3/ch08-01-beyond-result.md)
- [Exit](./part3/ch08-02-exit.md)
- [Recovery Combinators](./part3/ch08-03-recovery.md)
- [Error Accumulation](./part3/ch08-04-accumulation.md)
- [Concurrency & Fibers](./part3/ch09-00-concurrency.md)
- [What Are Fibers?](./part3/ch09-01-what-are-fibers.md)
- [Spawning and Joining](./part3/ch09-02-spawning-joining.md)
- [Cancellation](./part3/ch09-03-cancellation.md)
- [FiberRef](./part3/ch09-04-fiberref.md)
- [Resources & Scopes](./part3/ch10-00-resources.md)
- [The Resource Problem](./part3/ch10-01-resource-problem.md)
- [Scopes and Finalizers](./part3/ch10-02-scopes-finalizers.md)
- [acquire_release](./part3/ch10-03-acquire-release.md)
- [Pools](./part3/ch10-04-pools.md)
- [Scheduling](./part3/ch11-00-scheduling.md)
- [Schedule](./part3/ch11-01-schedule.md)
- [Built-in Schedules](./part3/ch11-02-builtin-schedules.md)
- [retry and repeat](./part3/ch11-03-retry-repeat.md)
- [Clock Injection](./part3/ch11-04-clock-injection.md)
# Part IV: Advanced
- [Software Transactional Memory](./part4/ch12-00-stm.md)
- [Why STM?](./part4/ch12-01-why-stm.md)
- [TRef](./part4/ch12-02-tref.md)
- [Stm and commit](./part4/ch12-03-stm-commit.md)
- [Transactional Collections](./part4/ch12-04-collections.md)
- [Streams](./part4/ch13-00-streams.md)
- [Stream vs Effect](./part4/ch13-01-stream-vs-effect.md)
- [Chunks](./part4/ch13-02-chunks.md)
- [Backpressure Policies](./part4/ch13-03-backpressure.md)
- [Sinks](./part4/ch13-04-sinks.md)
- [Schema](./part4/ch14-00-schema.md)
- [The Unknown Type](./part4/ch14-01-unknown.md)
- [Schema Combinators](./part4/ch14-02-combinators.md)
- [Validation and Refinement](./part4/ch14-03-validation.md)
- [ParseErrors](./part4/ch14-04-parse-errors.md)
- [Testing](./part4/ch15-00-testing.md)
- [run_test](./part4/ch15-01-run-test.md)
- [TestClock](./part4/ch15-02-test-clock.md)
- [Mocking Services](./part4/ch15-03-mocking.md)
- [Property Testing](./part4/ch15-04-property-testing.md)
# Appendices
- [API Quick Reference](./appendix-a-api-reference.md)
- [Migrating from `async fn` to effects](./appendix-b-migration.md)
- [Glossary](./appendix-c-glossary.md)