## New in 1.0 * Breaking change: all instances now need to specify the variance of all type parameters. * Breaking change: instances of the form `NFunctor (f a)` are no longer allowed. Instead, write `NFunctor f` and use `NonvariantT` to indicate that `a` cannot be mapped. * `NFunctor` is now even more general: in addition to generalizing `Functor`, `Bifunctor`, `Trifunctor`, etc., it now also generalizes `Contravariant`, `Invariant`, and `Profunctor`! * Introducing new infix operators corresponding to each variance. `(<#>)` is still used for covariant type parameters, so after updating the instances, all the call sites which were using the 0.1 API should still work. `(>#<)` is used for contravariant type parameters, `(<#>/>#<)` is used for invariant type parameters, which can be mapped given both a covariant and a contravariant function, and `(👻#👻)` is used for phantom type parameters. * Introducing the `(-#-)` operator, which can be used instead of any other operator in order to leave the corresponding type parameter untouched. * Introducing support for mapping over type parameters of kind `* -> *` using natural transformations. The corresponding infix operators have two hashes: the covariant operator is `(<##>)`, the contravariant operator is `(>##<)`, etc. * Introducing the `VarianceTransformer` typeclass, via which you can add support for other variances and other kinds. * It is no longer needed (nor allowed) to write both an `NFunctor Either` instance and an `NFunctor (Either a)` instance corresponding to `Either`'s `Bifunctor` and `Functor` instances. Instead, the `NFunctor (Either a)` instance is derived from the `NFunctor Either` instance. ## New in 0.1.0.0 * Initial release of the `NFunctor` typeclass