Каковы различия между классами типов и абстрактными типами данных?
Я понимаю, что это базовая вещь для программистов на Haskell, но я имею опыт работы с Scala и буду заинтересован в примерах Scala. Лучшее, что я могу найти прямо сейчас, это то, что классы типов «открыты», а ADT - «закрыты». Также было бы полезно сравнить и сопоставить классы типов со структурными типами.