A brief history of Scala

Session Abstract

What can one tiny function teach you about twenty years of Scala? We rewrite isPalindrome version by version and let the code tell the story. Watch it grow from classic Scala 2 into the modern Scala 3; tail recursion, type classes, extension methods, all earning their place. A palindrome reads the same both ways, Scala’s history does not.

Session Description

Scala has spent over two decades reinventing how to write code. New syntax arrives while some idioms slip into retirement, and the obvious way to express something in 2010 can look very different by 2026. Rather than march through the changelog, we tell that story with the help of a simple function: isPalindrome, as it evolves with Scala versions.
We start with a one-liner and let the problem itself pull in new language machinery, one feature at a time, only adding things when they are needed. We will look into generalizing from String to Seq[A], using tail recursion with @tailrec, and sequence extractors +:/:+ that peel a palindrome from both ends in a single pattern. Asking what “equal” even means walks us through type classes as implicits and their given/using reincarnation. We close by letting the answer say something more than just true or false, contrasting sealed-trait ADTs with Scala 3 enums, and wrapping the whole thing as a fluent extension method.
Each step fits on a single slide, and together they become a tour of Scala’s evolving style via type abstraction, recursion, the implicits-to-givens transition, ADTs, and extension methods.
Audience members leave with a timeline of Scala’s syntax and idiom changes, a clearer sense of why features were added rather than merely that they were. No prior history required; just a fondness for strings that read the same both ways.

Talk
Odd Möller
Odd Möller

Coder in Chief

Youmoni

Martin Zachrison
Martin Zachrison

Global Operations Director

Kodmagi