fn mk_chan(f fn () T) chan T { gench := chan T{cap: 1} // // This does not work, yet // go fn(ch2 chan T, f2 fn() T) { // res := f2() // ch2 <- res // }(gench, f) return gench } fn g(x f64, y f64) f64 { return x * x + y * y } fn test_generic_chan_return() { ch := mk_chan(fn () f64 { return g(3, 4) }) ch <- 13.4 res := <-ch assert res == 13.4 }