[Haskell-cafe] Static computation/inlining

Steve Schafer steve at fenestra.com
Mon Oct 11 09:54:04 EDT 2010


On Sun, 10 Oct 2010 18:51:59 -0700, Alexander Solla <ajs at 2piix.com>
wrote:

>Although the list isn't huge, I would still rather get rid of the
>O(2*n) operation of turning it into maps at run-time.

I usually handle this as follows:

1) I create my data file in some human-friendly format (such as your
list of tuples), so that I can easily edit it later, as required.

2) I write a program, a sort of preprocessor, that (a) loads the data
from the human-friendly format into a processing-friendly structure, and
then (b) serializes that structure into a file that's efficient to load
at run time. (So, for example, lookups from the name of a country to its
ISO codes can be handled via a Patricia structure; a Patricia structure
is tedious to construct, but once constructed, is easy to serialize and
de-serialize.)

3) The file containing the serialized structure is then linked into the
rest of the "real" program as a source unit, where the serialized
structure is represented as a constant (usually a string, but sometimes
an array of numbers, etc.).

If your build environment has a reasonable make-like tool, then the
whole process is pretty automatic; you just modify the human-friendly
file as often as you want, and the preprocessor is invoked
automatically, as needed.

-Steve Schafer


More information about the Haskell-Cafe mailing list