Main Page
Viewing old version 773515349672051a0e5cd03bd88f1bf6bf9b06fb; View Current
Why
I find the tour of scala a nice idea, but very difficult to follow for a few reasons:
- The level of the tour elements skips from extremely basic to beyond advanced without a good guide through. This has left me scratching my head at some of the more advanced concepts.
- Many of the features are demonstrated via mathematical conecpts or completely arbitrary calculations (how often do I need to take a list and arbitrarily modulo its contents into a new list?)
- Some features are demonstrated by setting up a convoluted problem that the feature magically solves, leaving me wondering why the feature even exists, when a simpler design for the problem at hand would have obviated the need for it.
- The more advanced topics are described in very terse format and difficult to understand without what I assume is a deep understanding of Scala already or some other functional programming language.
So, I’m going through each thing and trying to:
- Order them sensibly, so previous topics support future ones
- Create more real-world situations where a feature might be useful (I make you this promise: The word “monoid” will never be used again in these pages)
- Comment on my own thoughts as to the utility of the feature.
I’m also a Java programmer by trade, so a lot of the “justification” aspects that come to me are in comparison to Java.
The Tour
These are in a reasonable order to allow subsequent tour elements to build on previous ones, and to keep the learning curve at a reasonable level.
Basics
- ScalaBasics – this covers some syntactic things that might surprise you, as well as some very basic things about working with Scala (not in the tour)
- UnifiedTypes
- ScalaClasses
- ScalaPackages
- ScalaTraits
- ScalaGenerics
- ScalaAnnotations
- ScalaOperators
Intermediate
- ScalaFunctions
- PatternMatching
- FunctionCurrying – define a function that has received some of its parameters now, and will get the remainder later.
- CaseClasses – taking switch statements to a useful level.
- SealedClasses – tightening up CaseClasses.
- XmlLiterals
- ForComprehensions – don’t let the name confuse you; this is about Scala’s powerful
forloop construct - TypeBounds
- InnerClasses – you only thought they were basic.
- ImplicitConversions
- TypeDependentClosures – Closures in general discussed here, too.
Advanced
- ImplicitParameters
- TypeVariance
- AbstractTypes – not abstract classes
- ExplcitlyTypedSelfReferences
Last Updated 07/31/2009 at 08:15:21 PM by davec
blog comments powered by Disqus
All Content by David Copeland is licensed under a
Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.