Skip to main content


Showing posts from September, 2006
Because I am now reading a book about Haskell, but also because when I implemented the gist of Palo in Erlang, I was bitten by - tada! - a typing error, I decided to port the code over to Haskell. While the functional core syntax of the two languages is quite similar, here's one detail that took me a while to figure out: A case construct in Haskell always introduces new name bindings, whereas Erlang uses existing bindings as equality tests. So, in Haskell you have to do something like if atkey == key then ... else ..., while in Erlang you can simply do case AtKey of Key -> ... Other -> ... (which seems more intuitive to me).

The Gist of Palo - Erlang In Action

I have been asked to review the Palo code base. This is an open-source MOLAP database server. To get a feeling for what its core C code does, I reimplemented the gist of it in Erlang. Turns out it's really just a few lines when you have high-level functional constructs at your disposal. Out of curiosity, I then went and extended it so it really mimicks the Palo cube storage more closely, binary array searches and all (loading is still non-optimized, though). Finally, I even added a tweak that I suspect would boost Palo's performance a little. If anyone's interested, the code for loading and finalizing a cube is in cube_load.erl, the basic code for querying - possibly aggregated - cell values is in cube.erl. The latter also contains some tests showing how it's used.