map3

Namespace: FsToolkit.ErrorHandling

Function Signature

('a -> 'b -> 'c -> 'd) 
    -> Task<'a> 
    -> Task<'b>
    -> Task<'c> 
    -> Task<'d>

Examples

Note: Many use-cases requiring map operations can also be solved using the task computation expression.

Example 1

Let's assume that we have an add function that adds three numbers:

// int -> int -> int -> int
let add a b c = a + b + c

And an another function that asynchronously retrieves an integer, say a person's age:

type AccountId = int

// AccountId -> Task<int>
let getAge accountId =
    task {
        let ages = [
            (1, 19);
            (2, 21);
            (3, 34);
            (4, 47);
            (5, 55);
        ]
        return ages |> Map.ofList |> Map.find accountId
    }

With the help of Result.map3 function, we can now do the following:

let summedAges =
  Task.map3 add (getAge 1) (getAge 3) (getAge 5)
  // task { 108 }

Last updated