This is an abstract definition. In order to use it in unit testing,
the implementor must think of a strategy to evaluate the truthiness
of the returned Equiv values.
Even though in TypeScript the Funfix library is using classes to
express these laws, when implementing this class it is recommended
that you implement it as a mixin using implements, instead of extending
it directly with extends. See
TypeScript: Mixins
for details and note that we already have applyMixins defined.
We are doing this in order to support multiple inheritance and to
avoid inheriting any static members. In the Flow definitions (e.g.
.js.flow files) for Funfix these classes are defined with
interface, as they are meant to be interfaces that sometimes have
default implementations and not classes.
Type class laws defined for Functor.
This is an abstract definition. In order to use it in unit testing, the implementor must think of a strategy to evaluate the truthiness of the returned
Equivvalues.Even though in TypeScript the Funfix library is using classes to express these laws, when implementing this class it is recommended that you implement it as a mixin using
implements, instead of extending it directly withextends. See TypeScript: Mixins for details and note that we already haveapplyMixinsdefined.We are doing this in order to support multiple inheritance and to avoid inheriting any
staticmembers. In the Flow definitions (e.g..js.flowfiles) for Funfix these classes are defined withinterface, as they are meant to be interfaces that sometimes have default implementations and not classes.