I go to a fair few (probably too many), tech conference and meetups. A passing observation, is that if code samples are shown a proportion of the audience will try to run them while following along. Initially, this seems counter intuitive (to try and both listen and absorbing information while also trying to perform actions as a background task), though my own experience is that this works suprisingly well for practical activities, (maybe the multi-sensory exposure helps learning and retention ?).
After many years of Java development, discovering Scala’s type system and related features was something of a departure for me. Suffice to say GADT wasn’t my first four letter utterance when learning about pattern matching on types, let alone what, when and how to use variance annotations and generalized type constraints. To kick things off, here’s a ‘small but powerful‘ few lines of buzzword bingo on the type system:
…Scala is a statically, strongly, typed language, with implicit type inference and support for structural and existential types. It also features parameterized types, abstract and phantom types and is capable of implicitly converting between datatypes. These core capabilities are utilized by context and view bounds and complimented by generalized type constraints, to provide powerful compile time contracts. Furthermore, Scala supports declaration site type annotations to facilitate invariant, covariant and contravariant type variance…
In a word, Ouch !
In the remainder of this post, I’ll try to demystify these concepts and sew the seeds of intrigue for further investigation.
This article hopes to demonstrate that even if the use of Scala is restricted to/ bounded by the OO paradigm, it is still WIN packed. Continue reading
As good as it gets was a film starring Jack Nicholson, in which he played a misathropic writer who also happened to suffer from OCD. What bearing has this got with Scala ? Well non-directly, or even indirectly TBH, though I’d say that if Scala were best represented by any psychological disorder, it would most likely be some flavour of bipolar disorder. Scala really does seem to be a modern programming Marmite, where developers either love it or hate it. With no real middle ground being forged between the two. I personally find this quite ironic given the ‘maleability’ of Scala as a programming tool. Continue reading