Yesterday I did a presentation at the budapest.scala meetup on Scala's type system, or more precisely, two interesting aspects of it: type algebra and type programming.
My inspiration was a presentation by Jon Pretty at SkillsMatter in London, after which, during my flight back to Budapest, I decided that I must translate this presentation to Hungarian and present it at our Scala meetup, because I was so fascinated by the idea of adding and multiplying types. Roughly at the same time I was reading a blog post series by Joe Barnes on type programming in Scala, and as it was similarly mind-blowing, I added that topic to my presentation plan too. And if I was already there, I also crammed type classes and variance into it, so that it could become an exploration of four really interesting concepts in Scala's type system, and in between these four highlights, I could also go through and take an inventory of basic type features of the language. But it became so long, that, reluctantly though, I had to remove these two latter topics. I still hope that I'll be able to cover these too in a future presentation.
It's funny how Jon Pretty started his presentation in London by saying that he was not an expert of the subject, and he had basically just translated Chris Taylor's blog post series on the algebra of algebraic data types, from Haskell to Scala. Well I am far less of an expert, I'm also - as Jon Pretty put it - just like a messenger, I just blindly repeat what I have read. And I have also been re-using Chris Taylor's brilliant blog posts, his examples, explanations and images, and it goes without saying how grateful I am to him. I highly recommend to everyone to read the original series.
I'm not sure how self-explanatory these slides are (you can ask me questions in comments below), but they may give you at least an idea of whether you are interested in these topics, and if so, where to look for more info. Probably the most useful slide is the one at the end, with all the sources I have used, so if you only want to read one, read that one.
And if you happen to be in Budapest and interested in Scala, join the budapest.scala meetup group, and let's learn together!