From a8fad03cc657be8a0238d9b707b099a410966d2e Mon Sep 17 00:00:00 2001 From: a Date: Sat, 26 Mar 2022 20:56:03 -0500 Subject: [PATCH] add readme --- readme.md | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..2ddec7d --- /dev/null +++ b/readme.md @@ -0,0 +1,84 @@ +# lambda + +package lambda provides tools for performing operations on generic array types + +features: + + +features: + - Map [T] -> [T] + - MapV [T] -> [V] + - MapError [T] -> ([T], [error] + - MapErrorV [T] -> ([V], [error] + - Foldr [T] -> T + - Foldl [T] -> T + - Entries map[K]V -> ([K], [V]) + - Flatten [[T]] -> [T] + - Merge ([T], [T]) -> [T] + - Split ([T], int) -> [[T]] + +todo: + - idk + +## parallel + +subpackage parallel provides parallelized operations on generic array types + +features: + - Map [T] -> [T] + - MapV [T] -> [V] + - MapError [T] -> ([T], [error] + - MapErrorV [T] -> ([V], [error] + +todo: + - idk + +example usage: + +making a request + +``` +package main + +import ( + "encoding/json" + "fmt" + "log" + "net/http" + + "git.tuxpa.in/a/lambda/parallel" +) + +type someResult struct { + Title string `json:"title"` + Id int `json:"id"` +} + +func main() { + var requests = make([]*http.Request, 20) + + for i := range requests { + r, _ := http.NewRequest("GET", fmt.Sprintf("https://jsonplaceholder.typicode.com/todos/%d", i), nil) + requests[i] = r + } + + results, errs := parallel.MapErrorV(requests, func(r *http.Request) (*someResult, error) { + out := &someResult{} + res, err := http.DefaultClient.Do(r) + if err != nil { + return nil, err + } + defer res.Body.Close() + err = json.NewDecoder(res.Body).Decode(out) + return out, err + }, 4) + + for i, v := range results { + if errs[i] != nil { + log.Printf("err: %s", errs[i]) + } else { + log.Printf("result: %+v", v) + } + } +} +```