『Functional Declarative Design』
Functional Declarative Design Methodology
Tools for Managing Complexity
Freeモナドを、OOPのInterfaceと同じような機能として使う
たしかに

Freeモナドを使って、DSLを作れる
interfaceというか、methodというか、中身が空っぽの関数のみを提供し、
その後、その実装を変える、ということが容易にできる
これがDIとか、Algebraic Effectsの感じに似てるので、アーキテクチャとして採用できる
Diagrams and Visual Representations For Modeling and Requirements Analysis
Domain Modeling With Interpretable Domain-Specific Languages
説明としては、OOPと同等のことをFreeモナド使えばできるよ、ってぐらいか
めっちゃおもろいというわけでもない
The Hierarchical Free Monads Approach
Inversion of Control and Dependency Injection
Free Monad Application Architecture
>
Interfacesが、各DSL命令の定義
Business Logicで、DSLを使ってロジックを記述
Implementationで、その実装の詳細を記述
ここだけが純粋でない箇所
Functional Design Patterns
Design Principles
Case Studies and Practical Applications of Functional Declarative Design
Conclusion
Misc
Background
Importance
Bibliography