armanbilge / schrodinger

Give your cats a set of dice
Apache License 2.0
36 stars 4 forks source link
cats cats-effect probabilistic-programming

Schrodinger

Latest version

Schrodinger is an (early-stage) project for probabilistic programming in Scala 3, built for the Cats ecosystem. At its heart is the RVT monad transformer for modeling pseudo-random effects that is designed to fully compose with asynchronous effects such as IO. The goal is that this construct will facilitate the implementation of high-performance, concurrent Monte Carlo algorithms for simulation and inference.

Furthermore, Schrodinger encodes the foundational probability distributions as a set of typeclasses to be used to write "universal" probabilistic programs, for which simulators and inference algorithms can be automatically derived by implementing interpreters in terms of these same typeclasses.

Usage

libraryDependencies += "com.armanbilge" %% "schrodinger" % "0.3-193-ed9a8ba"

Modules

If not readily apparent, various aspects of the design are heavily influenced by Cats Effect 3.