Skip to content

Task wrapped result + option helpers #184

@sheridanchris

Description

@sheridanchris

Is your feature request related to a problem? Please describe.
Helper functions to work with Task<Result<'success option, 'error>>

Example:

type Error =
  | UsernameTaken
  | DatabaseError of DbError

taskResult {
  do!
    // getUserByUsername : string -> Task<Result<User option, DbError>>
    getUserByUsername createAccountRequest.Username // 
    |> TaskResult.mapError DatabaseError
    |> TaskResult.bindRequireNone UsernameTaken
}

Describe the solution you'd like
Helper functions that combine bind + requireSome, requireNone, etc...

// name needs work :P
let inline bindRequireSome (error: 'error) (taskResultOption: Task<Result<'success option, 'error>>) =
    taskResultOption
    |> bind (Result.requireSome error >> Task.singleton)

Describe alternatives you've considered
N/A

Additional context
N/A

I would like to create a PR for this.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions