title: Scala: difference between a typeclass and an ADT?
body: <p>What are the differences between typeclasses and Abstract Data Types?</p>
  
  <p>I realize this is a basic thing for Haskell programmers, but I come from a Scala background, and would be interested in examples in Scala. The best I can find right now is that typeclasses are "open" and ADT's are "closed". It would also be helpful to compare and contrast typeclasses with structural types. </p>