gofpher
mo
gofpher | mo | |
---|---|---|
2 | 14 | |
9 | 2,764 | |
- | 3.2% | |
0.0 | 7.8 | |
almost 8 years ago | 2 months ago | |
Go | Go | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
gofpher
-
Functional Programming Library for Golang by IBM
I'm glad to see this idea getting some traction again. I haven't used Go much in the last few years, but I started writing playing around with a similar idea back in 2016 when I was working on a small compiler for a configuration management tool, and later put together a [small stand-alone proof of concept library](https://github.com/rebeccaskinner/gofpher) as part of a [talk](https://speakerdeck.com/rebeccaskinner/monadic-error-handlin...).
At the time, I remember finding FP in go surprisingly ergonomic. Implementing the library to support it was a pain since the type system wasn't expressive enough to prevent everything from devolving into a pile of untyped reflection, but it was reasonably easy to keep that an implementation detail. On the whole, I felt like go would have lent itself well to the "dash of FP for flavor" style of programming that seems to be gaining popularity these days. Unfortunately, in 2017 at least, the Go community seemed to have very little interest in the idea.
I still have a fondness for Go. It always felt nice to use. If the language features have caught up to the point where a robust library like this is feasible, and the communities attitude has shifted, I might take another look at the language.
-
Learn Go in ~5mins
Monadic error handling like in ML work-alikes, Rust etc. would be a good start. Adopt:
• https://github.com/rebeccaskinner/gofpher
• https://speakerdeck.com/rebeccaskinner/monadic-error-handlin...
I've been talking to the local Go user group. No one even knows about that concept. This continues a pattern of general ignorance/lack of looking beyond one's horizon I've noticed.
mo
-
Functional Programming Library for Golang by IBM
A simple alternative is the combination of:
- https://github.com/samber/lo
- https://github.com/samber/mo
The split is also nice as you can choose to just use the generic convenience functions from lo without the more FP related things from mo.
-
Handling nil values: Pointers vs Abstractions
Is it a popular approach to use abstractions in general for handling nil values with libraries like null or mo? Should I just stick with pointers? What are your experiences on this topic?
-
samber/lo utility package based on generics
I really like it. Have been using it for a while, just don't overuse it. Also, I recommend github.com/samber/mo
-
Switching from C++ to Rust
Go generics allow all kinds of things https://github.com/samber/mo
-
I know there is no OPTIONALS in go , i hope they implement it , what is the best approach to deal with optionals in go? sometimes i think the default values added by golang isn’t suitable, like adding zero to int ! .. zero is a value not nil or undefined.
Have you taken a look at mo? https://github.com/samber/mo
-
What the state of functional programming ecosystem ?
If you are curious, try looking at github.com/samber/lo and github.com/samber/mo packages if you get a chance.
-
Reduce Boilerplate in Go Http Handlers with Go Generics
I have seen https://github.com/samber/mo but it's a niche. Monads aren't popular in Golang community.
- Monads for Go, Using Generics (Option, Result, Either)
-
Expected vs Unexpected errors in Go
I've also looked at the mo library, in particular to use Option[User] but that's really just a slightly safer way to represent User* here. (Safer because you're forced to check if there's a value and so don't have the same accidental panic risk.)
- Monads and popular FP abstractions, powered by Go 1.18 Generics
What are some alternatives?
FuncFrog - Stream api (kind of) implementation for go, other useful functions and packages to use go in a functional way
lo - 💥 A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find...)
fp-go - functional programming library for golang
fpGo - Monad, Functional Programming features for Golang
gotests - Automatically generate Go test boilerplate from your source code.
valor - Go option and result types that optionally contain a value
scala - Scala 2 compiler and standard library. Scala 2 bugs at https://github.com/scala/bug; Scala 3 at https://github.com/scala/scala3
fp-go - fp-go is a collection of Functional Programming helpers powered by Golang 1.18+ generics.
fuego - Functional Experiment in Golang
fp-ts - Functional programming in TypeScript
go-sumtype - A simple utility for running exhaustiveness checks on Go "sum types."