私は、GHCJS でコンパイルされたブラウザーで実行されている Haskell アプリケーションに取り組んでいます。これは、websocket を介して、同じく Haskell で記述されたサーバーと通信します。どちらのプログラムも同じ Haskell データ型定義を共有しているため、シリアル化形式を「選択するだけ」で済みます。
現時点では、簡単にするために、プログラムはRead
とShow
で実行されます。これは機能しますが、明らかに理想的ではありません。
一方で、高速シリアライゼーションの通常の候補であるcereal
ライブラリーなどで動作するByteStrings
ものが GHCJS で実際に効率的であるかどうかは不明です。さらに、GHCJS の API は、Websockets への JavaScript バインディングが提供するByteStrings
バイナリー型と対話することを困難にしているようです。Blob
汎用コード生成 (を使用GHC.Generics
) がいいでしょう。
以前にこの問題を解決した人はいますか? GHCJS でさまざまなシリアライゼーションのバリアントをベンチマークした可能性もありますか?