Dependency injection in F#?

One approach is a technique called Partial Application. It lets you partially apply N parameters from left to right – leaving you with a new and reduced function. Partial application is possible due to currying. In many functional programming languages a function with multiple parameters is rewritten as a series of new functions, each with only one parameter.

Dependency injection in F#
Code Snippet
module Multiplier =
    let multiply (logger: ILogger) (a:int) (b:int) =
	let result = a * b
        logger.LogInformation($"Result is {result}")
// Imagine 'logger' already being defined in Startup
// Partially apply 'logger' to Multiplier.multiply
let multiply = Multiplier.multiply logger
multiply 10 10