interface MonadSample : (Type -> Type) -> TypeInterface for sampling from a distribution
Sampling is a costate/server for distributions
We require that there is at least one element in the distribution
We also require that we can fold over the elements, i.e. that positions
are finite and have an order
TODO add temperature as a implicit parameter with a default value of 1.0
sample : IsNonEmpty (a .cont) => IsFoldable (a .cont) => Costate (m <!> Dist a)sample : MonadSample m => IsNonEmpty (a .cont) => IsFoldable (a .cont) => Costate (m <!> Dist a)