0 | module Control.Monad.Sample.Definition
 1 |
 2 | import Data.Fin
 3 |
 4 | import Control.Monad.Distribution
 5 |
 6 | ||| Interface for sampling from a distribution
 7 | ||| We require that there is at least one element in the distribution
 8 | ||| TODO add temperature as a implicit parameter with a defualt value of 1.0
 9 | public export
10 | interface Monad m => MonadSample m where
11 |   sample : {i : Nat} -> (isSucc : IsSucc i) =>
12 |     Dist i -> m (Fin i)