Requirements:
- Git (optional)
- F#
I will assume that you have git
already installed.
Functional programming and domain-driven design might not seem to be a good match, but in fact functional programming can be an excellent approach to designing decoupled, reusable systems with a rich domain model. This workshop will show you why.
This will be a hands-on workshop designed for beginners in functional programming. We'll do lots of exercises and build some small projects that take us all the way from high-level design to low-level implementation.
Functional programming and domain-driven design might not seem to be a good match, but in fact functional programming can be an excellent approach to designing decoupled, reusable systems with a rich domain model. This workshop will show you why.
This will be a hands-on workshop designed for beginners in functional programming. We'll do lots of exercises and build some small projects that take us all the way from high-level design to low-level implementation.
This will be especially useful for people learning functional programming -- all concepts used in the workshop will be explained. Previous development experience is recommended.
(* =================================== | |
Code from my series of posts "Six approaches to dependency injection" | |
=================================== *) | |
open System | |
(* | |
## The requirements |
(* =================================== | |
Code from my series of posts "Six approaches to dependency injection" | |
=================================== *) | |
open System | |
(* ====================================================================== | |
1. Dependency Retention | |
In which we don't worry about managing dependencies, |
(* =================================== | |
Code from my series of posts "Six approaches to dependency injection" | |
=================================== *) | |
open System | |
(* ====================================================================== | |
5. Dependency Interpretation |
(* =================================== | |
Code from my series of posts "Six approaches to dependency injection" | |
=================================== *) | |
open System | |
#load "Expecto.fsx" // from https://gist.github.com/swlaschin/38e21ff8d64ebe4e93e42fd288b486d5 | |
(* ====================================================================== |
(* =================================== | |
Code from my series of posts "Six approaches to dependency injection" | |
=================================== *) | |
open System | |
(* ====================================================================== | |
4. Dependency Injection |
(* =================================== | |
Code from my series of posts "Six approaches to dependency injection" | |
=================================== *) | |
open System | |
(* ====================================================================== | |
2. Dependency Rejection |
// ====================================== | |
// A simple test framework for demos and blogs posts, based on Expecto | |
// ====================================== | |
open System | |
open System.Diagnostics | |
[<AutoOpen>] | |
module Domain = | |
type ExpectoException(msg) = inherit Exception(msg) | |
type AssertException(msg) = inherit ExpectoException(msg) |