3 ms·
Actually C++ looks simple compared to Scala. E.g. C++ iterators seem complex and tricky compared to say Lua's. But let's just look at one element of Scala's tr
by copx 13y ago
Actually C++ looks simple compared to Scala. E.g. C++ iterators seem complex and tricky compared to say Lua's.
But let's just look at one element of Scala's truly byzantine iteration logic collection: Iterable
Inherited: Iterable IterableLike Equals GenIterable
GenIterableLike
Traversable GenTraversable GenericTraversableTemplate TraversableLike GenTraversableLike Parallelizable TraversableOnce GenTraversableOnce FilterMonadic HasNewBuilder AnyRef Any
Implicitly: by traversable2opsby MonadOpsby any2stringaddby any2stringfmtby any2ArrowAssocby any2Ensuringby alternateImplicit
Source: http://www.scala-lang.org/api/current/index.html#scala.collection.Iterable http://www.scala-lang.org/api/current/index.html#scala.colle...
..and now explain what all these aspects actually do! And that's just one small element!
And look at the method set of that thing.. Whoa! Again C++ suddenly seems minimalist.
- michaelochurch 13y agoScala is one of the best languages out there if your job is to write code. If you spend a non-trivial amount of time reading it, it depends on which of the sublanguages the original writers used. If Scala is used as "ML with OO features when really needed but not otherwise" it's quite nice, but I would not advise using Scala without a style guide for a multi-developer project.
- happy_dino 13y agoWhat happens is that every single bit of functionality is split up and abstracted away, so that code duplication is kept at a minimum. Considering that Scala ships with BOTH tons of collection types AND tons of useful operations, this seems to be a sane thing to do. Scala manages ... - to make both adding a new operation AND adding a new type not suck too much - to retain the “best” collection type through operations, without duplicating code left and right Most other languages fail already at point number one. No other language has managed to achieve point number two, let alone both.
- quatrevingts 13y agoTo be fair, this is a list of everything inherited, not just one level up, but the full transitive closure. All of the Gen* classes arrived with 2.9 when parallel collections were added. Also, the implicits shown are any implicits which can be invoked on Iterable, which includes all implicits which can be invoked on Any.
- jongraehl 13y agoAm I supposed to be intimidated by a list of 100 things you can do with an Iterable? Each one seems pretty reasonable. The C++ stdlib has 100 things you can do with iterators, too.