F#의 msdn 메뉴얼 중 유독 의존성 주입은 회색지대에 존재하는데요.
함수형 언어에서 의존성 주입은 올바로 구현하려면 Free 모나드를 사용해야 하고 많이 봐줘서 Reader 모나드를 사용해야 하는데 이럴 경우 대부분 배보다 배꼽이 더 커지게 됩니다. 비즈니스 보다 의존성 주입 코드가 4~8배 정도 작성해야 하는 경우가 흔하죠.
F#은 멀티페러다임 언어라고 크게 양보하는 경우 Microsoft.Extensions.DependencyInjection
을 사용할 수 있는데 이 경우 OOP의 단점을 그대로 가져오게 됩니다. 추가로 ServiceLocator Pattern
에 노출되어 고통 받게 되지요.
블로그 저자는 https://github.com/Lanayx/Oxpecker
프레임워크의 저자로 F#을 사용한 Asp.net core의 의존성 구성을 진지하게 검토하고 F#의 유연한타입 (Flexible Types - F# | Microsoft Learn)을 통해 코드 작성량을 줄이는 방법을 제안하고 있습니다. F#만의 특징을 활용한다는게 인상적이네요.