https://github.com/jwhittle933/funked
A Functional Library for Go
https://github.com/jwhittle933/funked
functional-programming genserver golang library
Last synced: about 2 months ago
JSON representation
A Functional Library for Go
- Host: GitHub
- URL: https://github.com/jwhittle933/funked
- Owner: jwhittle933
- Created: 2020-03-21T14:54:42.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2022-04-07T02:20:29.000Z (about 3 years ago)
- Last Synced: 2025-02-02T18:33:06.191Z (4 months ago)
- Topics: functional-programming, genserver, golang, library
- Language: Go
- Homepage:
- Size: 67.4 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Funked: A Functional Library for Go

Funked, as the name implies, is a functional library for Go. But `functional` has multiple meanings in this context. On the one hand, "functional" refers to functional programming techniques, principles such as immutability, referential transparency (pure functions), and function composition. On the other hand, "functional" refers to that more abstract quality of code that indicates that it works, is useful, and make certain aspects of writing it more enjoyable or less mentally taxing. This library aims at both, and has taken inspiration from a number of other languages, most notably Rust and Elixir.
## Libraries
Funked is really just a wrapper for smaller libraries. You can get the whole thing with `go get github.com/jwhittle933/funked/...` or just one, with `go get github.com/jwhittle933/funked/async/process`, or even a collection with `go get github.com/jwhittle933/funked/slices/...`.### Slices
The Go has been alive with talks of generics for a number of years, and course seems to have been plotted for inclusion. Until that time, writing `Filter`, `Map`, and other functional collection helpers is a very manual process. The `slices` package helps to alleviate that for some primitive types, namely `int`, `string`, and `byte` (`uint8`). See the [README](./slices/README.md) for `slices` for an overview of using the API.### Async
The `async` package is designed for starting "managed" go routines, async processes that provide a way to monitor activity and communicate.