Polymorphic programs are always by general rule more correct than any of their concrete counterpart because the scope in which a developer operates is constrained exclusively to the methods exposed in the type classes. These methods are derived by the laws of the type classes and based upon math properties such as composition, associativity, commutativity etc all of them applied to the context and concerns that a particular type class models