This infographic illustrates the typeclass hierarchies and relationships in cats 2.13.0, cats-effect 3.7.1, and cats-mtl 1.7.0.
This is an updated version of the original infographic, created with Mathcha and LaTeX and shareable under the CC-BY-SA 4.0 license.
The .pdf export is probably what you want for printing, framing, or tattoo inspiration.
The .svg export below can be enlarged with a gentle click.
- Colors distinguish typeclasses from different modules.
- Arrows indicate relationships between typeclasses, generally pointing toward parent typeclasses.
- Dashed relationships in the cats-mtl section represent implications rather than direct inheritance.
The original tpolecat/cats-infographic (v1.x) was created by Rob Norris using OmniGraffle.
This fork (v2.x) updates the diagram to the library versions listed above and provides editable Mathcha and LaTeX sources to make future contributions easier.
Contributions to improve the diagram or update it for newer library versions are welcome.
To edit the diagram structure:
- Load
cats-infographic.mathchainto Mathcha. - Make your changes in the visual editor.
- Export the diagram as LaTeX, preserving the font configuration in the existing source.
To polish details:
- Edit
cats-infographic.texdirectly. - Recompile the LaTeX source and regenerate the SVG.
Be aware that exporting from Mathcha again may overwrite manual changes to the LaTeX source.
With a LaTeX distribution and Poppler installed, run the following commands from the repository root:
pdflatex -interaction=nonstopmode -halt-on-error cats-infographic.tex
pdftocairo -svg -noshrink -nocenter cats-infographic.pdf cats-infographic.svgThe standalone class sizes the page to the diagram. Change border=10mm in cats-infographic.tex to adjust all four margins.
The title and footer use zero node padding so the vertical margins follow the visible text.
\pagecolor{white} paints an opaque white background in both exports, including the margins.
The SVG inherits the PDF page size. The pdftocairo command, provided by Poppler, uses -noshrink -nocenter to preserve the page coordinates and avoid thin transparent edges from automatic scaling.