Result<('a -> 'b) option, 'c> -> Result<'a option, 'c>
-> Result<'b option, 'c>
// string -> int
let characterCount (s: string) = s.Length
let result =
Ok(Some "foo") // Result<string option, 'error>
|> ResultOption.apply (Ok(Some characterCount)) // Result<int option, 'error>
// Ok (Some 3)
let result =
Ok None // Result<string option, 'error>
|> ResultOption.apply (Ok(Some characterCount)) // Result<int option, 'error>
// Ok None
let result =
Error "bad things happened" // Result<string option, string>
|> ResultOption.apply (Ok(Some characterCount)) // Result<int option, string>
// Error "bad things happened"