
Haskell code is expressive. The HLearn library uses 6 lines of Haskell to define a function for training a Bayesian classifier; the equivalent code in the Weka library uses over 100 lines of Java. That’s a big difference! In this post, we’ll look at the actual code and see why the Haskell is so much more concise.
But first, a disclaimer: It is really hard to fairly compare two code bases this way. In both libraries, there is a lot of supporting code that goes into defining each classifier, and it’s not obvious what code to include and not include. For example, both libraries implement interfaces to a number of probability distributions, and this code is not contained in the source count. The Haskell code takes more advantage of this abstraction, so this is one language-agnostic reason why the Haskell code is shorter. If you think I’m not doing a fair comparison, here’s some links to the full repositories so you can do it yourself:
- HLearn’s bayesian classifier source code (74 lines of code)
- Weka’s naive bayes source code (946 lines of code)

In this post, we’re going to look at how to manipulate multivariate distributions in Haskell’s
Growing up, I wanted nothing more than to be a Naval officer. But then Jesus changed my heart. He’s been teaching me that instead of killing my enemies, I’m supposed to love them. In fact, I’m supposed to dedicate my life to serving them. Maybe even die for them. So
The
This is the first in a series of posts about the