On 7/8/19 9:44 PM, lgod...@gmail.com wrote: > f( g() ) compiles when g returns exactly the number of args that f() > requires, but if g() returns only 1/2 that number f (g(), g() ) wont > compile !! ...Is this not a Golang absurdity ??
On the contrary, it's a good example of Go's pragmatism, allowing some relatively safe syntactic sugar without opening a Pandora's box of complete generality. To illustrate Rob Griesemer's point, in his comment that I linked to in my earlier reply (https://github.com/golang/go/issues/973#issuecomment-142733515), consider the following package that's maintained by someone else (your colleague or an Internet stranger): === package mu func CalcDispersion (in []float64) (variance float64, stddev float64) { ... } func CalcAvg (in []float64) (sma21 float64, ema21 float64) { ... } === Then you use it as follows, assuming a future Go version that allows "spreading" of multi-valued function returns: === v, sd := mu.CalcDispersion(i) sma, ema := mu.CalcAvg(i) func delta (a, b float64) float64 { return a-b } d1 := delta(mu.CalcDispersion(i)) d2 := delta(mu.CalcAvg(i)) func me (variance float64, stddev float64, sma21 float64, ema21 float64) float64 { ... } m := me(mu.Alpha(i), mu.Beta(i)) === All well and fine, until one day, the package interface changes after some discussion: === package mu func CalcDispersion (in []float64) (variance float64, stddev float64, range float64) { ... } func CalcAvg (in []float64) (sma21 float64) { ... } === Yes, that's a breaking change, and the Go compiler helpfully screams at you on every assignment statement ...except the last one. And since the compiler was silent about that last line, you're almost certainly gonna miss the HUGE logic error in it...and spend days scratching your head at the absurd results your program throws up. -- Best Regards, Adrian -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/504b90aa-afea-02b7-dfd9-eabf9eace9dc%4003s.net.