funcy

package module
v1.9.0 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2024 License: MIT Imports: 4 Imported by: 5

README

funcy

GoDoc

What is this?

A library providing functional-style operations like Map/Reduce/Filter (to name a few) implemented in Go w/ generics.

But Rob Pike says we should just write for loops instead...

Sorry, I guess I just couldn't resist. I extend apologies to all the Go purists who are annoyed by this.

Are you aware that this approach lacks lazy evaluation, generates a ton of garbage, and won't scale for increasingly large inputs?

Yup. I extend apologies to all the functional purists who are annoyed by this.

How would one install it? (Asking for a friend...)

go get github.com/mdwhatcott/funcy

Enjoy!

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Abs added in v1.3.0

func Abs[T Number](t T) T

func Add added in v0.4.0

func Add[T Number](a, b T) T

func All added in v0.6.0

func All(inputs []bool) bool

func Any added in v0.6.0

func Any(inputs []bool) bool

func As

func As[T any](v any) T

func ByLength added in v0.10.0

func ByLength[T any](t T) int

func ByNumericValue added in v0.10.0

func ByNumericValue[T Number](t T) T

func Complement

func Complement[T any](predicate func(t T) bool) func(t T) bool

func Concat added in v1.5.0

func Concat[T any](slices ...[]T) (result []T)

func Drain

func Drain[T any](channel <-chan T) (slice []T)

func Drop

func Drop[T any](n int, values []T) []T

func DropAllBut added in v0.11.0

func DropAllBut[T any](n int, values []T) []T

func DropWhile

func DropWhile[T any](predicate func(T) bool, values []T) (result []T)

func Filter

func Filter[T any](predicate func(t T) bool, values []T) (result []T)

func FilterAs

func FilterAs[T any](collection []any) []T

func First added in v0.4.0

func First[T any](values []T) T

func FirstNonDefault added in v0.14.0

func FirstNonDefault[T comparable](values ...T) (zero T)

func FirstOrDefault added in v0.11.0

func FirstOrDefault[T any](values []T) (default_ T)

func Flatten added in v0.3.0

func Flatten[T any](matrix [][]T) (result []T)

func Frequencies added in v0.3.0

func Frequencies[T comparable](values []T) map[T]int

func GroupBy added in v0.5.0

func GroupBy[K comparable, V any](key func(V) K, list []V) (result [][]V)

func IndexBy

func IndexBy[K comparable, V any](key func(V) K, list []V) map[K]V

func Is

func Is[T any](v any) bool

func IsEven added in v0.10.0

func IsEven[T Integer](t T) bool

func IsNegative added in v1.6.0

func IsNegative[T Integer](t T) bool

func IsNil added in v1.9.0

func IsNil[T any](t T) bool

func IsOdd added in v0.10.0

func IsOdd[T Integer](t T) bool

func IsPositive added in v1.6.0

func IsPositive[T Integer](t T) bool

func IsZero added in v1.6.0

func IsZero[T Integer](t T) bool

func KeyValueIndexBy added in v0.15.0

func KeyValueIndexBy[K comparable, V1, V2 any](kv func(V1) (K, V2), list []V1) map[K]V2

func Last added in v0.4.0

func Last[T any](values []T) T

func LastOrDefault added in v0.11.0

func LastOrDefault[T any](values []T) (default_ T)

func Load

func Load[T any](result chan<- T, stream []T)

func Map

func Map[I, O any](transform func(i I) O, values []I) (result []O)

func Map2 added in v0.8.0

func Map2[Ia, Ib, O any](transform func(Ia, Ib) O, a []Ia, b []Ib) (result []O)

func MapAsAny added in v0.13.0

func MapAsAny[T any](items []T) (result []any)

func MapCat

func MapCat[I, O any](transform func(i I) []O, values []I) (result []O)

func MapKeys added in v0.7.0

func MapKeys[K comparable, V any](m map[K]V) (results []K)

func MapLookup added in v0.12.0

func MapLookup[K comparable, V any](m map[K]V) func(K) V

func MapValues added in v0.7.0

func MapValues[K comparable, V any](m map[K]V) (results []V)

func MapVoid added in v1.1.0

func MapVoid[T any](f func(T), values []T)

func Max added in v0.10.0

func Max[T LessThan](all []T) T

func Min added in v0.10.0

func Min[T LessThan](all []T) T

func Multiply added in v0.4.0

func Multiply[T Number](a, b T) T

func None added in v0.6.0

func None(inputs []bool) bool

func PairsMap added in v1.2.0

func PairsMap[K comparable, V any](pairs []Pair[K, V]) map[K]V

func Partition added in v0.9.0

func Partition[T any](length, increment int, values []T) (result [][]T)

func Product added in v0.4.0

func Product[T Number](rolls []T) T

func Range

func Range[N Number](start, stop N) (result []N)

func RangeStep added in v0.10.0

func RangeStep[N Number](start, stop, step N) (result []N)

func Reduce

func Reduce[T any](calc func(a, b T) T, start T, values []T) (result T)

func Remove

func Remove[T any](predicate func(t T) bool, values []T) []T

func Repeat added in v0.4.0

func Repeat[T any](n int, t T) (result []T)

func Rest

func Rest[T any](values []T) []T

func Reverse added in v1.7.0

func Reverse[T any](values []T) (result []T)

func Shuffle added in v1.8.0

func Shuffle[T any](values []T) (result []T)

func SliceLookup added in v0.12.0

func SliceLookup[V any](s []V) func(int) V

func SlicedIndexBy

func SlicedIndexBy[K comparable, V any](key func(V) K, list []V) map[K][]V

func SlicedKeyValueIndexBy added in v0.15.0

func SlicedKeyValueIndexBy[K comparable, V1, V2 any](kv func(V1) (K, V2), list []V1) map[K][]V2

func SortAscending

func SortAscending[C LessThan, V any](key func(V) C, original []V) (result []V)

func SortDescending

func SortDescending[C LessThan, V any](key func(V) C, original []V) (result []V)

func Square added in v0.10.0

func Square[T Number](t T) T

func String added in v0.10.0

func String[T any](t T) string

func Sum added in v0.4.0

func Sum[T Number](rolls []T) T

func Take

func Take[T any](n int, values []T) []T

func TakeAllBut added in v0.11.0

func TakeAllBut[T any](n int, values []T) []T

func TakeWhile

func TakeWhile[T any](predicate func(T) bool, values []T) (result []T)

func Unique added in v1.4.0

func Unique[T comparable](values []T) []T

func ZipMap added in v0.7.0

func ZipMap[A comparable, B any](a []A, b []B) (result map[A]B)

Types

type Integer

type Integer interface {
	int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64
}

type LessThan

type LessThan interface {
	Number | string
}

type Number

type Number interface {
	Integer | uintptr | float64 | float32
}

type Pair

type Pair[A, B any] struct {
	A A
	B B
}

func MapPairs added in v1.2.0

func MapPairs[K comparable, V any](m map[K]V) (results []Pair[K, V])

func Zip

func Zip[A, B any](a []A, b []B) (result []Pair[A, B])

Directories

Path Synopsis
internal
should
Package should info: github.com/mdwhatcott/testing/should@v0.20.1 (a little copy-paste is better than a little dependency) AUTO-GENERATED: 2023-01-18 14:06:49.960562 -0700 MST m=+0.003159418
Package should info: github.com/mdwhatcott/testing/should@v0.20.1 (a little copy-paste is better than a little dependency) AUTO-GENERATED: 2023-01-18 14:06:49.960562 -0700 MST m=+0.003159418
Package risky houses convenience functions that introduce runtime risks (i.e.
Package risky houses convenience functions that introduce runtime risks (i.e.

Jump to

Keyboard shortcuts

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