MicroHsにおける軽量DataFrame:Haskell 2010での冒険

2025-09-11

2015年のFrege(JVM上のHaskell方言)を使ったAndroidプロジェクトから始まった著者の関数型プログラミングの旅は、自身のDataFrameライブラリをGHCから切り離し、MicroHsで動作させるという探求へと繋がりました。この記事では、GADTs、型族、反射を使わずに、Haskell 2010でDataFrameの中核機能(構築、基本的な式、`filterWhere`、`derive`、Markdownレンダリング)を実装する方法を詳しく説明します。実験の結果、冗長なコードではありますが、中核機能は十分に動作することが示され、MicroHs(小さなCLIや組み込み環境向け)とGHC(速度とエコシステムアクセス向け)のどちらを選択するかという柔軟性が得られます。MicroHsのバイナリサイズは約100倍小さく、速度は約5~10倍遅いですが、多くのデータ操作タスクにおいては、このトレードオフは価値のあるものです。ヘビーリフティングにはGHCバックエンドを使い続けることができます。

開発