Guest User

Untitled

a guest
Jan 23rd, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.62 KB | None | 0 0
  1. [<AutoOpen>]
  2. module Prelude
  3.  
  4. type AsyncResult<'T, 'TError> =
  5. Async<Result<'T, 'TError>>
  6.  
  7. module AsyncResult =
  8. let map (mapping : 'T -> 'U) (result : AsyncResult<'T, 'TError>) : AsyncResult<'U, 'TError> =
  9. async {
  10. match! result with
  11. | Ok value -> return Ok (mapping value)
  12. | Error err -> return Error err
  13. }
  14.  
  15. let bind (mapping : 'T -> AsyncResult<'U, 'TError>) (result : AsyncResult<'T, 'TError>) : AsyncResult<'U, 'TError> =
  16. async {
  17. match! result with
  18. | Ok value -> return! mapping value
  19. | Error err -> return Error err
  20. }
Add Comment
Please, Sign In to add comment