Probabilistic Functional Programming in Scala