A law is a requirement expressed in the form of an assertion function augmented with explanatory information.
A Laws class represents a list of Laws, together with a name for the group and methods to assert all of the laws.
Represents the laws that should hold true for an algebraic structure (a Monad) which contains a "flatMap" operation and obeys the laws of associativity, right identity, and left identity.
A law is a requirement expressed in the form of an assertion function augmented with explanatory information. As generalized, laws take no parameters, but are rather designed to be used where required parameters are in scope. Commonly, this will be a class that takes implicit generators for any required parameters.