com.jnape.palatable.lambda.functor

## Interface Functor<A,F extends Functor<?,F>>

- Type Parameters:
    `A` - The type of the parameter
    `F` - The unification parameter
  All Known Subinterfaces:
    Applicative<A,App>, BiMonoidFactory<A,B,C>, BiPredicate<A,B>, BiSemigroupFactory<A,B,C>, Effect<A>, Fn0<A>, Fn1<A,B>, Fn2<A,B,C>, Fn3<A,B,C,D>, Fn4<A,B,C,D,E>, Fn5<A,B,C,D,E,F>, Fn6<A,B,C,D,E,F,G>, Fn7<A,B,C,D,E,F,G,H>, Fn8<A,B,C,D,E,F,G,H,I>, Iso<S,T,A,B>, Iso.Simple<S,A>, Kleisli<A,B,M,MB>, Lens<S,T,A,B>, Lens.Simple<S,A>, Monad<A,M>, MonadError<E,A,M>, MonadReader<R,A,MR>, MonadRec<A,M>, MonadT<M,A,MT,T>, MonadWriter<W,A,MW>, Monoid<A>, MonoidFactory<A,B>, Predicate<A>, Prism<S,T,A,B>, Prism.Simple<S,A>, Schema<Values>, Semigroup<A>, SemigroupFactory<A,B>, Traversable<A,T>, TypeSafeKey<A,B>, TypeSafeKey.Simple<A>
  All Known Implementing Classes:
    Absent, AddAll, All, Alter, And, Any, AutoBracket, Between, Both, Bracket, CartesianProduct, CatMaybes, Choice2, Choice3, Choice4, Choice5, Choice6, Choice7, Choice8, Clamp, CmpEq, CmpEqBy, Coalesce, Collapse, Collapse, Compose, Compose, Compose, Concat, Cons, Const, Constantly, Cycle, Difference, Distinct, Downcast, Drop, DropWhile, Either, EitherT, Empty, Endo, EndoK, Eq, Filter, Find, First, Flatten, FoldLeft, FoldRight, Force, GroupBy, GT, GTBy, GTE, GTEBy, Head, Id, Identity, IdentityT, IfThenElse, InGroupsOf, Init, Inits, Intersection, Intersperse, Into, Into1, Into3, Into4, Into5, Into6, Into7, Into8, IO, Iterate, Join, LambdaIterable, LambdaMap, Last, Last, Lazy, LazyRec, LazyT, LeftAll, LeftAll, LeftAny, LeftAny, LiftA2, LiftA3, LiftA4, LiftA5, LiftA6, LiftA7, LT, LTBy, LTE, LTEBy, Magnetize, MagnetizeBy, Map, Market, Matching, Max, MaxBy, Maybe, MaybeT, Merge, Merge, MergeMaps, Min, MinBy, Not, Occurrences, Or, Over, Partition, Peek, Peek2, Pre, PrependAll, Present, PutAll, RateLimit, Re, ReaderT, RecursiveResult, ReduceLeft, ReduceRight, Repeat, Replicate, Reverse, RightAll, RightAll, RightAny, RightAny, RunAll, RunAll, SafeT, ScanLeft, Sequence, Set, SingletonHList, Size, Slide, Snoc, Sort, SortBy, SortWith, Span, State, StateT, Tagged, Tail, Tails, Take, TakeWhile, These, Times, ToArray, ToCollection, ToMap, Trampoline, Trivial, Try, Tuple2, Tuple3, Tuple4, Tuple5, Tuple6, Tuple7, Tuple8, Tupler2, Uncons, Under, Unfoldr, Union, Until, Upcast, View, Writer, WriterT, Xor, Zip, ZipWith
  Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

      @FunctionalInterface
      public interface Functor<A,F extends Functor<?,F>>

  An interface for the generic covariant functorial operation `map` over some parameter `A`. Functors are foundational to many of the classes provided by this library; generally, anything that can be thought of as "mappable" is an instance of at least this interface.

  For more information, read about Functors.

  See Also:
    `Bifunctor`, `Profunctor`, `Fn1`, `Tuple2`, `Either`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `default <Concrete extends Functor<A,F>> Concrete` | `coerce()` Convenience method for coercing this functor instance into another concrete type.
    `<B> Functor<B,F>` | `fmap(Fn1<? super A,? extends B> fn)` Covariantly transmute this functor's parameter using the given mapping function.

- - ### Method Detail

    - #### fmap

          <B> Functor<B,F> fmap(Fn1<? super A,? extends B> fn)

      Covariantly transmute this functor's parameter using the given mapping function. Generally this method is specialized to return an instance of the class implementing Functor.
      Type Parameters:
        `B` - the new parameter type
      Parameters:
        `fn` - the mapping function
      Returns:
        a functor over B (the new parameter type)

    - #### coerce

          default <Concrete extends Functor<A,F>> Concrete coerce()

      Convenience method for coercing this functor instance into another concrete type. Unsafe.
      Type Parameters:
        `Concrete` - the concrete functor instance to coerce this functor to
      Returns:
        the coerced functor