tinkoffcreditsystems / tofu

Functional programming toolbox https://tinkoffcreditsystems.github.io/tofu



Functional programming toolkit aimed at taming the complexity of Tagless Final approach.

CI Release Chat
Scala CI Maven Central Discord Chat

Quick Start

see the docs on the microsite

To use the whole utils pack just add to your build.sbt:

libraryDependencies += "ru.tinkoff" %% "tofu" % "latest version in badge"

Of course you can also specify the exact subproject that you wanna add to yours dependencies (used in place of "tofu"):

  • tofu-core for core (Main core)
  • tofu-memo for memo (Caching utils)
  • tofu-env for env (Some variation of a Reader Monad)
  • tofu-parallel for parallel (Parallel utils)
  • tofu-concurrent for concurrent (Concurrent utils)
  • tofu-optics-core for optics core (Optics typeclasses)
  • tofu-optics-interop for optics interop with Monocle
  • tofu-optics-macro for macro optics generators
  • tofu-data for data utils
  • tofu-logging for the whole set of logging utils (derivation, layout, structured)
  • tofu-logging-derivation for logging derivation only
  • tofu-logging-structured for logging structured only
  • tofu-logging-layout for logging layout only
  • tofu-logging-shapeless for interop between tofu-logging with Shapeless tag
  • tofu-logging-refined for interop between tofu-logging with Refined
  • tofu-zio-interop for interop with ZIO
  • tofu-enums for enums (Enumeratum utils)


Copyright the maintainers, 2020

Logos made with love by @impurepics


Please note we use following labels for automated release descriptions:

  • chore if your PR does not change any types and runtime semantics
  • fix if your PR merely fixes incorrect behavior


We have automated check for style conformance. You can run sbt fmt before PR. If you have any trouble during this check, just run sbt fmt and commit again.