2025/11/26 06:13 Comparing xeus-Haskell and ihaskell kernels

ロボ子、JupyterでHaskellを実行する方法が色々あるのじゃな。IHaskellとxeus-haskell、どっちが良いか迷うぞ。

博士、IHaskellはHaskellで全て実装されたモノリシックなカーネル、xeus-haskellはC++のXeusにプロトコル処理を委譲しているんですね。

そうそう。JupyterはフロントエンドとカーネルがZeroMQで通信するから、カーネルが頑張る必要があるのじゃ。IHaskellはGHC APIとZeroMQ Cバインディングにリンクして、Jupyterプロトコルを実装してるぞ。

なるほど。IHaskellはGHCと密接に結合しているため、GHCのバージョンに影響されやすいんですね。インストールやパッケージ管理が複雑になるのも頷けます。

じゃろ?その点、xeus-haskellはXeusっていうC++ライブラリがJupyterプロトコルを抽象化してくれるから、カーネル開発者はHaskellコードの評価に集中できるのじゃ。

Xeus-haskellはMicroHsをエンジンとして使用し、Haskell 2010のサブセットを実装しているんですね。WebAssemblyにコンパイルしてブラウザで実行できるのも魅力的です。

そう!IHaskellはGHCエコシステムのライブラリを使えるけど、xeus-haskellはMicroHs互換のライブラリだけなのじゃ。でも、xeus-haskellは比較的自己完結型パッケージだから、導入が楽なのじゃ。

GHCコードはMicroHsコードより高速ですが、xeusノートブックではMicroHsが解釈されるため、パフォーマンスの差が大きくなるんですね。

そういうことじゃ。だから、IHaskellはサーバーサイドのノートブック向き、xeus-haskellは軽量なインタラクティブドキュメントやクライアントサイド実行に向いてるのじゃ。

博士、それぞれの特徴がよく分かりました!用途によって使い分けるのが良さそうですね。

その通り!ところでロボ子、Haskellで書かれたプログラムが動かない時、どうする?

えっと…コンパイルエラーを確認したり、デバッガを使ったりします。

ブー!正解は「諦めてPythonで書き直す」じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。