On this page describing the precursor to the Scala language - the pizza language - they refer to it having both case classes and pattern matching - and then imply that these taken together provide algebraic types. Is this the case? To provide algebraic types - do you combine case classes and pattern matching?
Are Algebraic types just the combination of case classes and pattern matching?
type theory;pattern recognition;abstract data types
Scala provides algebraic types and pattern matching in a way that is compatible with classes, but this is not what algebraic types are  it is Scala's realisation of the concept. Technically, pattern matching is not even needed for algebraic types; it just makes them must more convenient to use. One could instead use functions the pull apart the types. Early scheme's approach to ADTs would do just this.