functools

package module
v0.0.0-...-498be72 Latest Latest
Warning

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

Go to latest
Published: Nov 16, 2018 License: BSD-2-Clause Imports: 5 Imported by: 1

README

Functools

Build Status

Functools is a simple Golang library including some commonly used functional programming tools. Reference [roman-kachanovsky/go-built-in]

Features

  • High level functions such as Apply/Reduce/Filter etc.
  • Rust-style Option type

Install

go get github.com/pytool/functools

Usage

package main

import (
	"log"

	. "github.com/pytool/functools"
)

func PartialFun() {
	sum := func(a, b int) int { return a * b }
	sum10 := Partial(sum, 10)
	result := sum10(10)
	log.Println(result)
}

Partial 偏函数的功能就是:把一个函数的某些参数给固定住,返回一个新的函数

multiply(x, y);
double = partial(multiply, y=2);
double(3)

Apply/Map :对 sequence 中的 item 依次执行 function(item),并将结果组成一个 List 返回

Reduce 先将 sequence 的前两个 item 传给 function,即 function(item1, item2),函数的返回值和 sequence 的下一个 item 再传给 function,即 function(function(item1, item2), item3),如此迭代,直到 sequence 没有元素,如果有 initial,则作为初始值调用。 reduece(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

Filter 将 function 依次作用于 sequnce 的每个 item,即 function(item),将返回值为 True 的 item 组成一个 List 返回。 Zip 将两个一维的Slice合并成一个二维的Slice

All 必须所有的元素都为真 bool:true int:!0 Any 只要有一个元素为真 Cmp 比较两个元素的大小,结果为int8 [> 1] [= 0] [< -1] ToBool 将元素转换成Bool类型

Sum 计算数值型元素的总和 Avg 计算数值型元素的平均值 Max 计算数值型元素的最大值 Min 计算数值型元素的最小值

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func All

func All(slice interface{}) bool

func AllFunc

func AllFunc(function, slice interface{}) bool

func AllFuncSafe

func AllFuncSafe(function, slice interface{}) (result bool, err error)

func AllSafe

func AllSafe(slice interface{}) (result bool, err error)

func Any

func Any(slice interface{}) bool

func AnyFunc

func AnyFunc(function, slice interface{}) bool

func AnyFuncSafe

func AnyFuncSafe(function, slice interface{}) (result bool, err error)

func AnySafe

func AnySafe(slice interface{}) (result bool, err error)

func Apply

func Apply(function, slice interface{}) interface{}

'Map' applies 'func' to every item of iterable 'slice' and return a slice of the results. Function allowes slices and arrays.

Map(func, slice) slice
MapSafe(func, slice) (slice, err)

func ApplySafe

func ApplySafe(function, slice interface{}) (result interface{}, err error)

func Avg

func Avg(slice interface{}) float64

func AvgSafe

func AvgSafe(slice interface{}) (result float64, err error)

func Cmp

func Cmp(a, b interface{}) int8

func CmpSafe

func CmpSafe(a, b interface{}) (result int8, err error)

func Compose

func Compose(functions ...interface{}) func(...interface{}) interface{}

func ComposeSafe

func ComposeSafe(functions ...interface{}) (result func(...interface{}) interface{}, err error)

func Filter

func Filter(slice interface{}) interface{}

func FilterFunc

func FilterFunc(function, slice interface{}) interface{}

func FilterFuncSafe

func FilterFuncSafe(function, slice interface{}) (result interface{}, err error)

func FilterSafe

func FilterSafe(slice interface{}) (result interface{}, err error)

func Map

func Map(function, slice interface{}) interface{}

func MapSafe

func MapSafe(function, slice interface{}) (result interface{}, err error)

func Max

func Max(slice interface{}) interface{}

func MaxSafe

func MaxSafe(slice interface{}) (result interface{}, err error)

func Min

func Min(slice interface{}) interface{}

func MinSafe

func MinSafe(slice interface{}) (result interface{}, err error)

func Partial

func Partial(function interface{}, args ...interface{}) func(...interface{}) interface{}

func PartialSafe

func PartialSafe(function interface{}, args ...interface{}) (result func(...interface{}) interface{}, err error)

func Reduce

func Reduce(function, slice, acc interface{}) interface{}

func ReduceSafe

func ReduceSafe(function, slice, acc interface{}) (result interface{}, err error)

func Sum

func Sum(slice interface{}) interface{}

func SumSafe

func SumSafe(slice interface{}) (result interface{}, err error)

func ToBool

func ToBool(value interface{}) bool

func ToBoolSafe

func ToBoolSafe(value interface{}) (result bool, err error)

func Zip

func Zip(slices ...interface{}) interface{}

func ZipSafe

func ZipSafe(slices ...interface{}) (result interface{}, err error)

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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