Computation Expression
CancellableValueTaskResult Computation Expression
CancellableValueTaskResult Examples
Example 1
tryGetUser : string -> CancellableValueTask<User option>
isPwdValid : string -> User -> bool
authorize : User -> CancellableValueTask<Result<unit, AuthError>>
createAuthToken : User -> Result<AuthToken, TokenError>type LoginError =
| InvalidUser
| InvalidPwd
| Unauthorized of AuthError
| TokenErr of TokenError
let login (username: string) (password: string) : CancellableValueTask<Result<AuthToken, LoginError>> =
cancellableValueTaskResult {
let! user = username |> tryGetUser |> CancellableValueTaskResult.requireSome InvalidUser
do! user |> isPwdValid password |> Result.requireTrue InvalidPwd
do! user |> authorize |> CancellableValueTaskResult.mapError Unauthorized
return! user |> createAuthToken |> Result.mapError TokenErr
}BackgroundCancellableValueTaskResult
Last updated