萌えハッカーニュースリーダー

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

出典: https://www.datahaskell.org/blog/2025/11/25/a-tale-of-two-kernels.html
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

ブー!正解は「諦めてPythonで書き直す」じゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search