3 ms·
>The problem that bothers me (and isnt in Conc), is how hard it is to run different things in the background and gather the results in different ways. Particula
by ilyt 4y ago
>The problem that bothers me (and isnt in Conc), is how hard it is to run different things in the background and gather the results in different ways. Particularly when you start doing those things conditionally and reusing results.
Do you have any examples ? About only that I can think of is "parse something to a bunch of different types" and that can be solved easily enough. What do you mean by "reusing results" ?
> Something like go-future helps. https://github.com/stephennancekivell/go-future https://github.com/stephennancekivell/go-future
f := future.New(func() string {
return "value"
})
value := f.Get()
that looks pretty awkward. with channels it would just be
f := Async(func() Type{return t})
v := <- f
- stephen123 4y agoThe main difference is that reading from channels will block if its empty where Futures, return the same value. Written more concisely. f := New(func() Type{return t}) v := g.Get() w := g.Get()
- ilyt 4y agoI wish Go had macros a'la Rust, it would be possible to write the whole thing in so much nicer way.
- philosopher1234 4y agosay good bye to all your nice tooling, fast compile times, uniform code bases... Programmer write cost <<<<<<<<< read cost
- sa46 4y agoWhen do you find reusing a promise useful? I know one canonical example is a loadable hashmap as in Concurrent Programming in Java, but I was curious if you knew of other examples.