+-A Copy-constructor, for creating modified copies of instances
The reasoning being that although you may sometimes want complex, custom-built classes with custom features and fancy inheritance, very (very!) often you want a simple classwith a constructor, pretty `__str__`and`__repr__` methods, and structural equality which doesn't inherit from anything. Case classes provide you just that, with an extremely concise declaration:
@@ -434,6 +435,8 @@ This is an implementation of a singly linked [cons list](http://en.wikipedia.org
As the classes `Nil` are `Cons` are nested within `List`, both of them get transformed into top-level classes which inherit from it. This nesting can go arbitrarily deep.
+Overall, case classes are similar to Python's [`namedtuple`](http://docs.python.org/2/library/collections.html#collections.namedtuple), but on steroids (methods, inheritence, etc.), and provides the programmer with a much better experience.
Pattern matching is taken from many functional languages, including Haskell,