Skip to main content
Version: v2.2.82 (latest)
Reference · Core Type

ReaderIOResult

Combine dependency injection (Reader) + lazy effects (IO) + Go error handling (Result). ReaderIOResult[C, A] is ReaderIOEither specialized for error.

01

Overview

type_definition.go
package readerioresult

// ReaderIOResult is ReaderIOEither specialized for error
type ReaderIOResult[C, A any] = ReaderIOEither[C, error, A]
// Which expands to: func(C) func() Either[error, A]
02

Core API

Constructors

FunctionSignatureDescription
Okfunc Ok[C, A any](value A) ReaderIOResult[C, A]Create successful value
Errorfunc Error[C, A any](err error) ReaderIOResult[C, A]Create error value
Offunc Of[C, A any](value A) ReaderIOResult[C, A]Alias for Ok
Askfunc Ask[C any]() ReaderIOResult[C, C]Access context

Transformations

FunctionSignatureDescription
Mapfunc Map[C, A, B any](f func(A) B) func(ReaderIOResult[C, A]) ReaderIOResult[C, B]Transform success value
Chainfunc Chain[C, A, B any](f func(A) ReaderIOResult[C, B]) func(ReaderIOResult[C, A]) ReaderIOResult[C, B]Sequence operations
03

Usage Examples

Basic Usage

basic.go
package main

import (
  RIOR "github.com/IBM/fp-go/v2/readerioresult"
)

type Dependencies struct {
  DB *sql.DB
}

func fetchUser(id string) RIOR.ReaderIOResult[Dependencies, User] {
  return RIOR.Ask[Dependencies, *sql.DB](func(deps Dependencies) *sql.DB {
      return deps.DB
  }).Chain(func(db *sql.DB) RIOR.ReaderIOResult[Dependencies, User] {
      return RIOR.TryCatchError(func() (User, error) {
          return db.QueryUser(id)
      })
  })
}