I posted before about some of the things in Scala which I think help and hinder legibility – all from my personal perspective of course. We’ll here’s the next instalment:
Wins
- yield
- “Any” type, and its immediate syb-types
- Pattern matching with types
- Pattern matching with tuples
- rockets (<= and =>) – so far at least…
- (new Duck).myMethod – to keep the scope of the Duck instance as tight as possible
- traits – I’ve always liked mixins anyway, but nothing is broken from what I liked in Ruby
- the terse syntax (sans curly braces etc.) for defining classes when you don’t need it – e.g. “class MyClass”
- val c = new MyObject with MyTrait – when you don’t need to reuse the class definition elsewhere
- sealed – does what it says on the tin
- zip – ditto
- take – ditto
- + – adding a new key-value pair to an existing map. Gives you a new map back
- catches and pattern matching
- try blocks being expressions
- exceptions being only for exceptional circumstances – a nice idiom
Losses
- explicit setter definition (_=) - :$
- set unions with ‘|’
- set differences with ‘&~’ or ‘--‘
Undecided
- no parens for methods which have no side effects – sometimes, when these are abstract, they make you double-take a little
Overall, things are getting less and less surprising and more and more #winning. Perhaps my resistance is being worn down. Perhaps I’m just more open to the experience. Or perhaps all this is taking hold. One thing I do know however is that some of the method names on the collections classes are just plain wrong, but I don’t think I’m alone in thinking that.
No comments:
Post a Comment