Earlier quoted context omitted.
> Go tells you very explicitly how it resizes slices by forcing you to write this: No, what most readers intuit from that is that `append` performs no mutation and that this is fine: s2 := append(s1, item) because it looks very much like, say, (def s2 (conj s1 item)) and often it will look like it works, especially at the smaller sizes, or if you never modify (or even use) s1. Except it's absolutely not fine. That's…
the idea that append performs no mutation is fairly insane. its name implies a mutation.
Example: https://hackage.haskell.org/package/bytestring-0.11.1.0/docs...