haskell perfect hash library using cmph, courtesy of Mark Wotton.