Opaque and Transparent Interpreters

The interpreter is the über pattern of functional programming. Most large programs written in a functional style can be viewed as using this pattern. Amongst many reasons, interpreters allow us to handle effects and still keep desirable properties such as substitution.

Given the importance of interpreters it is not surprising there are many implementation strategies. In this blog post I want to discuss one of the main axes along which implementation strategies vary, which is how far we take reification of actions within the interpreter.

Continue reading…

Probabilistic Programming in Scala

At the Typelevel Summit in Philadelphia I gave a talk about probabilistic programming, which I have recently been exploring. Probabilistic programming combines two great research areas that go great together—functional programming and machine learning (specifically, Bayesian inference). In this blog post I’ll attempt to explain the basic ideas behind probabilistic programming. I’m assuming you, dear reader, skew more towards programming than statistics, but are not afraid of numbers. Hence I’ll concentrate more on the programming than the machine learning side of things here.

Continue reading…

Scala.js is Important for Cloud Services

More people are using serverless architectures than I would have guessed, and they are getting significant benefits from doing so. Scala is a great fit for these kinds of architectures because it can use the JVM and, thanks for Scala.js, JavaScript runtimes too. This post is a small observation regarding this.

Continue reading…