Tofu
Functional programming toolbox
Install / Use
/learn @tofu-tf/TofuREADME
ToFu
Functional programming toolkit aimed at taming the complexity of Tagless Final approach.
Quick Start
see the docs on the microsite
see the examples in the examples directory
To use the whole utils pack just add to your build.sbt:
libraryDependencies += "tf.tofu" %% "tofu" % "latest version in badge"
Of course, you can also specify an exact list of tofu modules that you want to add to your dependencies (used in place
of "tofu"):
tofu-kernelfor core independent utilstofu-kernel-cats-mtlfor interop betweentofu-kerneland Cats MTL
tofu-core-*for core utils (replace suffix*withce2orce3depends on which cats-effect version you use)tofu-core-higher-kindfor higher kinded utilstofu-concurrentfor concurrent utilstofu-configfor config utilstofu-datafor data utilstofu-derivationfor derivation utils and derevo annotationstofu-doobiefor Doobie utilstofu-enumsfor Enumeratum utilstofu-envforEnv(a variation of a Reader Monad based on Monix Task)tofu-fs2-interopfor interop with fs2tofu-streamsfor streaming utilstofu-loggingfor the whole set of logging utils (derivation, layout, structured, util, interop)tofu-logging-derivationfor logging derivation onlytofu-logging-layoutfor logging layout onlytofu-logging-structuredfor logging structured onlytofu-logging-utilfor logging util onlytofu-logging-refinedfor interop between tofu-logging and Refinedtofu-logging-shapelessfor interop between tofu-logging and Shapeless tagtofu-logging-log4catsfor interop with Log4Cats
tofu-memofor caching utilstofu-observableformonix.reactive.Observableutilstofu-zio-interopfor interop with ZIO (core, logging)tofu-zio-corefor ZIO instances onlytofu-zio-loggingfor ZIO logging only
Adopters
Proud user of ToFu? Feel free to add your company!
<a href="https://tinkoff.ru/"><img width="40%" src="logos/t-logo.svg?sanitize=true" /></a>
<a href="https://vivid.money/"><img width="40%" src="logos/vivid.svg?sanitize=true" /></a>
<a href="https://tele2.ru/"><img width="40%" src="logos/tele2-ru-logo.svg?sanitize=true" /></a>
<a href="https://konfy.care/"><img width="40%" src="logos/konfy-logo.svg?sanitize=true" /></a>
<a href="https://www.raiffeisen.ru/en/"><img width="40%" src="logos/raiffeisen-logo.svg?sanitize=true" alt="Raiffeisen Bank Russia"/></a>
<a href="https://www.rms.com/"><img width="15%" src="logos/rms-logo.svg?sanitize=true" alt="Risk Management Solutions" /></a>
Contributing
Please note we use the following labels for automated release descriptions:
choreif your PR does not change any types and runtime semanticsfixif your PR merely fixes incorrect behavior
Formatting
We have an automated check for style conformance. You can run sbt checkfmt before PR.
If you have any trouble during this check, just run sbt fmt and commit again.
Copyright
Copyright the maintainers, 2019-2024
Logos made with love by @impurepics
Related Skills
node-connect
335.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
82.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
335.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
82.5kCommit, push, and open a PR
