4 ms·
They could also improve the language. Map, filter, and reduce are such fundamental concepts.
by dwaltrip 7y ago
They could also improve the language. Map, filter, and reduce are such fundamental concepts.
- JustSomeNobody 7y agoI think Go is pretty refreshing as it is. If it isn’t to one’s taste there are 3712 other languages to choose from.
- deleted 7y ago[deleted]
- Improvotter 7y agoNo, Go does not need this and I do not want it to get these useless "features". Go is simple and it gets things done with an amazing standard library. Use a different programming language if this does not suite you. Every programming language ends up with its own implementation of these "concepts" that it is hard to keep track. What is so difficult about for loops? It's simple for everyone and you don't need to learn new concepts because it works.
- bauerd 7y agoThing is that simple != easy But oh man it's the same discussion every time when Go comes up here
- StillBored 7y agoFundamental? IMHO, they are just syntactic sugar on a foreach loop. Which in many ways is bad because it provides yet another way to express the same concept, without a significant difference in the method of execution. What am I missing?
- dwaltrip 7y agoMap and filter allow for a very concise and clear indication of the intention of the code, so it is much quicker for the reader to parse what it is doing. Edit: Also, for loops are just a way of implementing a mapping, where you have data A that you want transformed into data A*. The map is the fundamental concept here, not the for loop.
- StillBored 7y agoWhich is more generic, the 'for' or the 'map'? I think its the 'for' because it has additional capabilities contained in the base concept, which is why I would call it more "fundamental". In fact in many languages much of filter() can be implemented in the for construct rather than its body.
- kinjba11 7y agoThere are two sorts of 'fundamental'. You are correct that the 'for' is just syntactic sugar for 'goto' which is more fundamental than map/filter in the sense that it translates into assembly/machine language, upon which all programs are built. Then you can say the silicon logic gates are even more fundamental, you can do even more things with them, etc. The map/filter is more fundamental in a mathematical sense. If you turn a list of A turned into a list of A*, the 'mapping' is the fundamental concept, the 'for' loop is just an implementation detail. Maybe the computer did it in parallel, or in random order, or I asked you to turn a pile of towels into a folded stack of towels. The same way if I say 'want to watch a movie' - the movie the fundamental concept, whether it's digital, film, etc. is irrelevant.
- UK-Al05 7y agoI mean a for loop is just a syntatic sugar of a if and a go-to, but go-to is easier to mess up. Same with map, they are a constrained for each that is guaranteed to be a correct implementation.
- WoodTree 7y agoThey don’t have to be glorified for loops, even if they usually are. Map and Filter should be capable of running in parallel or asynchronously, and some languages provide this.
- StillBored 7y agoAnd many languages, have parallel for constructs. The openmp #pragma parallel extensions in C/C++ for example. Of course its possible to create constructs which provide the messages passing for clustered environments too. And maybe that is part of the problem with a generic 'map' your not really sure the underlying implementation, is it parallel, clustered, serial, etc? So you end up with map(), parallel_map(), mpi_map(), etc, and how to you control the parallelism. Do you just let it default or do you have levers to control the batch & interleave. Pretty soon, its not such a simple construct anymore.
- WoodTree 7y agoIn a functional language those details should be irrelevant. But of course they are relevant in practice, and map is usually just a for loop.
- deleted 7y ago[deleted]
- jimbokun 7y agoWhy isn’t the foreach form the syntactic sugar?
- edsonmedina 7y agoMaking them work with strong types would require generics which would introduce a lot of complexity to the language though. It's being debated for years. It's pretty trivial to write your own custom map/filter/reduce though.