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)