writer

package
v1.0.96 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 11, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Ap

func Ap[B, A, W any](s S.Semigroup[W]) func(Writer[W, A]) func(Writer[W, func(A) B]) Writer[W, B]

func Censor

func Censor[FCT ~func(W) W, W, A any](f FCT) func(Writer[W, A]) Writer[W, A]

Censor modifies the final accumulator value by applying a function

func Chain

func Chain[A, B, W any](s S.Semigroup[W]) func(func(A) Writer[W, B]) func(Writer[W, A]) Writer[W, B]

func ChainFirst

func ChainFirst[FCT ~func(A) Writer[W, B], W, A, B any](s S.Semigroup[W]) func(FCT) func(Writer[W, A]) Writer[W, A]

func Eq

func Eq[W, A any](w EQ.Eq[W], a EQ.Eq[A]) EQ.Eq[Writer[W, A]]

Constructs an equal predicate for a Writer

func Evaluate

func Evaluate[W, A any](fa Writer[W, A]) A

func Execute

func Execute[W, A any](fa Writer[W, A]) W

func Flatten

func Flatten[W, A any](s S.Semigroup[W]) func(Writer[W, Writer[W, A]]) Writer[W, A]

func FromStrictEquals

func FromStrictEquals[W, A comparable]() EQ.Eq[Writer[W, A]]

FromStrictEquals constructs an `Eq` from the canonical comparison function

func Listens

func Listens[FCT ~func(W) B, W, A, B any](f FCT) func(Writer[W, A]) Writer[W, T.Tuple2[A, B]]

Listens projects a value from modifications made to the accumulator during an action

func Map

func Map[FCT ~func(A) B, W, A, B any](f FCT) func(Writer[W, A]) Writer[W, B]

func MonadAp

func MonadAp[B, A, W any](s S.Semigroup[W]) func(Writer[W, func(A) B], Writer[W, A]) Writer[W, B]

func MonadChain

func MonadChain[FCT ~func(A) Writer[W, B], W, A, B any](s S.Semigroup[W]) func(Writer[W, A], FCT) Writer[W, B]

func MonadChainFirst

func MonadChainFirst[FCT ~func(A) Writer[W, B], W, A, B any](s S.Semigroup[W]) func(Writer[W, A], FCT) Writer[W, A]

func Of

func Of[A, W any](m M.Monoid[W]) func(A) Writer[W, A]

Types

type Writer

type Writer[W, A any] func() T.Tuple2[A, W]
Example (Logging)
package main

import (
	"fmt"

	A "github.com/IBM/fp-go/array"
	F "github.com/IBM/fp-go/function"
	M "github.com/IBM/fp-go/monoid"
	T "github.com/IBM/fp-go/tuple"
)

func doubleAndLog(data int) Writer[[]string, int] {
	return func() T.Tuple2[int, []string] {
		result := data * 2
		return T.MakeTuple2(result, A.Of(fmt.Sprintf("Doubled %d -> %d", data, result)))
	}
}

func main() {

	m := A.Monoid[string]()
	s := M.ToSemigroup(m)

	res := F.Pipe3(
		10,
		Of[int](m),
		Chain[int, int](s)(doubleAndLog),
		Chain[int, int](s)(doubleAndLog),
	)

	fmt.Println(res())

}
Output:

Tuple2[int, []string](40, [Doubled 10 -> 20 Doubled 20 -> 40])

func MonadCensor

func MonadCensor[FCT ~func(W) W, W, A any](fa Writer[W, A], f FCT) Writer[W, A]

MonadCensor modifies the final accumulator value by applying a function

func MonadListens

func MonadListens[FCT ~func(W) B, W, A, B any](fa Writer[W, A], f FCT) Writer[W, T.Tuple2[A, B]]

MonadListens projects a value from modifications made to the accumulator during an action

func MonadMap

func MonadMap[FCT ~func(A) B, W, A, B any](fa Writer[W, A], f FCT) Writer[W, B]

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL