速さが必要な部分はC++で作って
Haskellから呼び出すってできないの?