stateless

package
v1.0.46 Latest Latest
Warning

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

Go to latest
Published: Oct 11, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package stateless defines a stateless (pure) iterator, i.e. one that can be iterated over multiple times without side effects, it is threadsafe

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Ap added in v1.0.7

func Ap[V, U any](ma Iterator[U]) func(Iterator[func(U) V]) Iterator[V]

Ap is the applicative functor for iterators

func Chain

func Chain[U, V any](f func(U) Iterator[V]) func(Iterator[U]) Iterator[V]

func Compress added in v1.0.13

func Compress[U any](sel Iterator[bool]) func(Iterator[U]) Iterator[U]

Compress returns an Iterator that filters elements from a data Iterator returning only those that have a corresponding element in selector Iterator that evaluates to `true`. Stops when either the data or selectors iterator has been exhausted.

func DropWhile added in v1.0.13

func DropWhile[U any](pred func(U) bool) func(Iterator[U]) Iterator[U]

DropWhile creates an Iterator that drops elements from the Iterator as long as the predicate is true; afterwards, returns every element. Note, the Iterator does not produce any output until the predicate first becomes false

func Filter added in v1.0.7

func Filter[U any](f func(U) bool) func(ma Iterator[U]) Iterator[U]

Filter filters the content of an iterator

func FilterChain added in v1.0.15

func FilterChain[U, V any](f func(U) O.Option[Iterator[V]]) func(ma Iterator[U]) Iterator[V]

FilterChain filters and transforms the content of an iterator

func FilterMap added in v1.0.7

func FilterMap[U, V any](f func(U) O.Option[V]) func(ma Iterator[U]) Iterator[V]

FilterMap filters and transforms the content of an iterator

func First added in v1.0.14

func First[U any](mu Iterator[U]) O.Option[U]

First returns the first item in an iterator if such an item exists

func Fold added in v1.0.16

func Fold[U any](m M.Monoid[U]) func(Iterator[U]) U

Fold folds the iterator using the provided Monoid.

func FoldMap added in v1.0.16

func FoldMap[U, V any](m M.Monoid[V]) func(func(U) V) func(ma Iterator[U]) V

FoldMap maps and folds an iterator. Map the iterator passing each value to the iterating function. Then fold the results using the provided Monoid.

Example
src := From("a", "b", "c")

fold := FoldMap[string](S.Monoid)(strings.ToUpper)

fmt.Println(fold(src))
Output:

ABC

func Last added in v1.0.14

func Last[U any](mu Iterator[U]) O.Option[U]

Last returns the last item in an iterator if such an item exists Note that the function will consume the Iterator in this call completely, to identify the last element. Do not use this for infinite iterators

func Map

func Map[U, V any](f func(U) V) func(ma Iterator[U]) Iterator[V]

Map transforms an Iterator of type [U] into an Iterator of type [V] via a mapping function

func Monoid

func Monoid[U any]() M.Monoid[Iterator[U]]

Monoid contructs a [M.Monoid] that concatenates two [Iterator]s

func Reduce

func Reduce[U, V any](f func(V, U) V, initial V) func(Iterator[U]) V

Reduce applies a function for each value of the iterator with a floating result

func Scan added in v1.0.12

func Scan[FCT ~func(V, U) V, U, V any](f FCT, initial V) func(ma Iterator[U]) Iterator[V]

Scan takes an Iterator and returns a new Iterator of the same length, where the values of the new Iterator are the result of the application of `f` to the value of the source iterator with the previously accumulated value

func Take added in v1.0.12

func Take[U any](n int) func(ma Iterator[U]) Iterator[U]

Take limits the number of values in the Iterator to a maximum number

func ToArray

func ToArray[U any](u Iterator[U]) []U

ToArray converts the iterator to an array

func Uniq added in v1.0.11

func Uniq[A any, K comparable](f func(A) K) func(as Iterator[A]) Iterator[A]

Uniq converts an Iterator or arbitrary items into an Iterator or unique items where uniqueness is determined based on a key extractor function

func Zip added in v1.0.11

func Zip[A, B any](fb Iterator[B]) func(Iterator[A]) Iterator[T.Tuple2[A, B]]

Zip takes two iterators and returns an iterators of corresponding pairs. If one input iterators is short, excess elements of the longer iterator are discarded

Types

type Iterator

type Iterator[U any] L.Lazy[O.Option[T.Tuple2[Iterator[U], U]]]

Iterator represents a stateless, pure way to iterate over a sequence

func Count added in v1.0.13

func Count(start int) Iterator[int]

Count creates an Iterator containing a consecutive sequence of integers starting with the provided start value

func Cycle added in v1.0.13

func Cycle[U any](ma Iterator[U]) Iterator[U]

DropWhile creates an Iterator that drops elements from the Iterator as long as the predicate is true; afterwards, returns every element. Note, the Iterator does not produce any output until the predicate first becomes false

func Empty

func Empty[U any]() Iterator[U]

Empty returns the empty iterator

func Flatten

func Flatten[U any](ma Iterator[Iterator[U]]) Iterator[U]

Flatten converts an Iterator of Iterator into a simple Iterator

func From added in v1.0.7

func From[U any](data ...U) Iterator[U]

From constructs an Iterator from a set of variadic arguments

func FromArray

func FromArray[U any](as []U) Iterator[U]

FromArray returns an iterator from multiple elements

func FromReflect added in v1.0.20

func FromReflect(val R.Value) Iterator[R.Value]

FromReflect creates an iterator that can iterate over types that define [R.Index] and [R.Len]

func MakeBy

func MakeBy[FCT ~func(int) U, U any](f FCT) Iterator[U]

MakeBy returns an Iterator with an infinite number of elements initialized with `f(i)`

func MonadAp added in v1.0.7

func MonadAp[V, U any](fab Iterator[func(U) V], ma Iterator[U]) Iterator[V]

MonadAp is the applicative functor for iterators

func MonadChain

func MonadChain[U, V any](ma Iterator[U], f func(U) Iterator[V]) Iterator[V]

func MonadMap

func MonadMap[U, V any](ma Iterator[U], f func(U) V) Iterator[V]

MonadMap transforms an Iterator of type [U] into an Iterator of type [V] via a mapping function

func Of

func Of[U any](a U) Iterator[U]

Of returns an iterator with one single element

func Repeat added in v1.0.13

func Repeat[U any](n int, a U) Iterator[U]

Repeat creates an Iterator containing a value repeated the specified number of times. Alias of Replicate

func Replicate

func Replicate[U any](a U) Iterator[U]

Replicate creates an Iterator containing a value repeated an infinite number of times.

func StrictUniq added in v1.0.11

func StrictUniq[A comparable](as Iterator[A]) Iterator[A]

StrictUniq converts an Iterator or arbitrary items into an Iterator or unique items where uniqueness is determined by the built-in uniqueness constraint

func ZipWith added in v1.0.11

func ZipWith[FCT ~func(A, B) C, A, B, C any](fa Iterator[A], fb Iterator[B], f FCT) Iterator[C]

ZipWith applies a function to pairs of elements at the same index in two iterators, collecting the results in a new iterator. If one input iterator is short, excess elements of the longer iterator are discarded.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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