2013-08-30 11 views
5

私は現在、サーバー側のバックエンドにはHaskellを使用し、フロントエンド/レンダリングにはElmを使用してオンラインゲームを作成しています。ElmにはHaskellの "Read"と同等のものがあります

今、私はGameStateを1つの大きなADTとして用意しています。これは、Elmでも同様に使用できます。私はJSONの使用を避けたいと思っていただけで、Elmのデータを "表示"し、それを解析してElmのADTに戻すことができます。

私は、showによって自動的に文字列出力を見て、それをデータに戻すことができるhaskellの "read"に相当するものがあるのでしょうか?そうでない場合は、既存のパーサーライブラリがElmで利用できますか?

もし私がJSONになったら、それを自動的にADTに変換する方法はありますか? (おそらくアイソーンのFromJSONに似た何か、?)

答えて

4

私の理解では、エルム-持たない型クラスは、することができ、容易readまたはfromJSON多型バージョンを持っていないということです。私はジェネリックプログラミングのための優れた機能を持っているとも信じていないので、derivingやOCamlのwithに近いものを実装するのも難しいでしょう。

残念ながら、これは、使用するさまざまなタイプを直列化および逆シリアル化するための一回限りの関数を書くことをお勧めします。 Haskell側でaesonを使用し、Elm's JSON libraryを使用してJSONとの間で関数を書くことができます。

また、Haskellのderiving Readで生成されたコードを再利用し、Elmに移植することもできます。しかし、これは価値があるよりももっとうまくいくかもしれないし、正確にどうやって行くのかは分かりません。

+0

これはまさに私が真剣にそれを使用する前に、エルムがもっと成熟するのを待つことにした理由です。 –

+0

@ johanatanフロントエンドには何を使用しますか? JavaScriptには型クラスもありません。 –

+1

@samboosalis:HaskellをHastまたはGHCJSを使ってコンパイルすることができます。どちらも型式をサポートしています。 –

関連する問題