Jev is a fan-out, not probabilistic programming, critic says
The author argues Jev's State → Dist[B] fan-out only returns marginal distributions for each question, lacking bind and a joint distribution, so it is not a true probabilistic programming language.
I think Jev is a cool API, but it is not probabilistic programming; qualifying it as a Kleisli arrow that I have seen people do here is exaggerating. Claude Code's explanation: Jev gives you the marginals; a decoder gives you the joint Jev's arrow is State → Dist[B] — a Kleisli arrow in the Giry/distribution monad, yes. But asking N questions about one fixed state isn't Kleisli composition; it's a fan-out, ⟨q₁,…,qₙ⟩ : State → Dist[B₁] × ⋯ × Dist[Bₙ]. Note the product is outside the monad: you get n marginals, not a Dist[B₁ × ⋯ × Bₙ]. And marginals don't determine the joint unless the coordinates are independent — which is the precise reason your "low probability at step 1 can win after composition" happens. The jointly-best answer need not be the tuple of marginally-best answers. The two things missing are exactly the two things that turn the monad into a language rather than a classifier: - bind (>=>) — P(c) = Σ_b P(b)·P(c∣b), marginalizing over the intermediate. Jev can't express it because q₂'s distribution is read off the same state, never off q₁'s outcome-as-new-state. - observe / condition — Bayesian update, P(latent ∣ evidence). Jev has no observe; it emits a fixed readout.
This post quotes another post: x.com/jamespearce/status/2100859300038234473