A one-page reference card for every monad transformer in Higher-Kinded-J. Use this page to locate a factory, an operation, or the equivalent Path type without reading prose.
What You'll Learn
The signature, witness, and primary use case for each transformer
The equivalent Effect Path type for readers crossing between APIs
The matching MTL capability when one exists
The smallest meaningful example for each transformer
Every transformer exposes a small set of static factories. The names follow a consistent shape: lift for outer-monad values, fromKind for already-nested values, and a primitive constructor for each effect-specific case.
Every transformer supports mapT(f) to change the outer monad without touching the inner effect. Note that StateT.mapT requires an extra Monad<G> parameter because StateT stores its monad instance internally.
var monad = new EitherTMonad<CompletableFutureKind.Witness, String>(CompletableFutureMonad.INSTANCE);
var success = EitherT.right(CompletableFutureMonad.INSTANCE, 42);
var failed = EitherT.left(CompletableFutureMonad.INSTANCE, "oops");
var monad = new OptionalTMonad<CompletableFutureKind.Witness>(CompletableFutureMonad.INSTANCE);
var present = OptionalT.some(CompletableFutureMonad.INSTANCE, 42);
var absent = OptionalT.none(CompletableFutureMonad.INSTANCE);
var monad = new MaybeTMonad<CompletableFutureKind.Witness>(CompletableFutureMonad.INSTANCE);
var just = MaybeT.just(CompletableFutureMonad.INSTANCE, 42);
var none = MaybeT.nothing(CompletableFutureMonad.INSTANCE);
var listMonoid = Monoids.list();
var monad = new WriterTMonad<IdKind.Witness, List<String>>(IdMonad.instance(), listMonoid);
var logged = WriterT.tell(IdMonad.instance(), List.of("started"));