Earlier quoted context omitted.
Either is nearly in the language anyways. The vast majority of pragmatic go functions will return [Result, Error] and or just [Error]. We are only missing support to treat this as a monad.
Either as a pattern is _used_ everywhere, but the standard library in go doesn't have one (people just use a tuple), so it's _always_ encoded wrong. It's very annoying.
FP-Go: Functional programming library for Golang
21–30 of 185 posts
Re: FP-Go: Functional programming library for Golang
#22Earlier quoted context omitted.
Either as a pattern is _used_ everywhere, but the standard library in go doesn't have one (people just use a tuple), so it's _always_ encoded wrong. It's very annoying.
There is no tuple type in go. When you see a func() (A, error) that is not a function returning a tuple. It is a function returning two values that cannot be composed. You can't A(B()) if B returns two values. It's pure comedy.
Re: FP-Go: Functional programming library for Golang
#23Earlier quoted context omitted.
Either as a pattern is _used_ everywhere, but the standard library in go doesn't have one (people just use a tuple), so it's _always_ encoded wrong. It's very annoying.
There is no tuple type in go. When you see a func() (A, error) that is not a function returning a tuple. It is a function returning two values that cannot be composed. You can't A(B()) if B returns two values. It's pure comedy.
You can if A is a function which takes two arguments, e.g.
package main
import "log"
func A(x, y int) { log.Printf("%d, %d", x, y) }
func B() (int, int) { return 1, 2 }
func main() { A(B()) }
https://go.dev/play/p/Jp4B0L6NJj2Re: FP-Go: Functional programming library for Golang
#24Re: FP-Go: Functional programming library for Golang
#25Earlier quoted context omitted.
There is no tuple type in go. When you see a func() (A, error) that is not a function returning a tuple. It is a function returning two values that cannot be composed. You can't A(B()) if B returns two values. It's pure comedy.
> You can't A(B()) if B returns two values. You can if A is a function which takes two arguments, e.g. package main import "log" func A(x, y int) { log.Printf("%d, %d", x, y) } func B() (int, int) { return 1, 2 } func main() { A(B()) } https://go.dev/play/p/Jp4B0L6NJj2
And there are no slices or channels of tuples, return values must be destructured right away.
Re: FP-Go: Functional programming library for Golang
#26Re: FP-Go: Functional programming library for Golang
#27Re: FP-Go: Functional programming library for Golang
#28Re: FP-Go: Functional programming library for Golang
#29Why not use Rust instead of you need FP?
Re: FP-Go: Functional programming library for Golang
#30The long README needs some usage examples.