  Anglican is a probabilistic programming system designed to interoperate with
Clojure and other JVM languages. We introduce the programming language
Anglican, outline our design choices, and discuss in depth the implementation
of the Anglican language and runtime, including macro-based compilation,
extended CPS-based evaluation model, and functional representations for
probabilistic paradigms, such as a distribution, a random process, and an
inference algorithm.
  We show that a probabilistic functional language can be implemented
efficiently and integrated tightly with a conventional functional language with
only moderate computational overhead. We also demonstrate how advanced
probabilistic modeling concepts are mapped naturally to the functional
foundation.
