Dependency Injection revisited
summary
Argues that dependency injection can be modeled as a tiny DSL and implemented in C# by translating an interface into a functor, then a free monad via Church encoding, with concrete code: discriminated-union-like types, adapters, a select/selectMany implementation, and optional visitor refactor. Builds a reservations program (isReservationInFuture, readReservations, create) and shows it compiles and runs but produces vast boilerplate, recursive selectMany that can blow the stack, awkward query-syntax plumbing, and ultimately recommends using Haskell/F# for this style rather than forcing it into C#.
AI-written summary · about
chapters (12)
- 0:00Introduction
- 3:57Reservation Repository
- 5:42Accepting a Reservation
- 19:09Discrimination Union
- 34:40Discrimination Union F
- 38:40AI Reservation Program
- 43:02Helper Methods
- 44:40Pure Functions
- 47:05Refactoring
- 48:12Isomorphism
- 49:50Query syntax
- 52:17Conclusion
related talks
55mFrom dependency injection to dependency rejection
49mReaders vs Constructors: Dependency Injection showdown
01h 29mDependency Injection in C++ - A Practical Guide
05mDependency Injection
32mLet's Build a Dependency Injection Framework
40mFundamentals of Dependency Injection
26mDependency Management in Clojure
41mAchieving Loose Coupling with Pure Dependency Injection
