Programming Markov Chain MonteCarlo