榆树有相当于Haskell的"读"

jmi*_*ite 5 parsing haskell functional-programming input elm

我正在编写一个在线游戏,我在服务器端后端使用Haskell,在前端/渲染时使用Elm.

现在我把我的GameState作为一个大的ADT,这个类型很简单,我也可以在Elm中使用它.我希望避免使用JSON,并简单地将Elm输出"show"输出到数据上,然后我可以将其解析回Elm中的ADT.

我想知道,有没有相当于haskell的"读取",它可以自动查看show输出的字符串,并将其解析回数据?如果没有,是否有任何现有的解析器库可供Elm使用?

如果我最终使用JSON,有没有办法自动将其转换为ADT?(或许类似于Aeson的FromJSON?)

Tik*_*vis 4

我的理解是 Elm\xe2\x80\x94not 具有 typeclasses\xe2\x80\x94 不能轻易拥有or的多态版本。我也不相信它有任何好的泛型编程设施,因此实现类似于OCaml 的东西readfromJSONderivingwith东西也很困难。

\n\n

不幸的是,这意味着您最好的选择是编写一次性函数来序列化和反序列化您使用的各种类型。您可以在 Haskell 端使用 aeson,然后使用Elm 的 JSON 库将函数写入 JSON 或从 JSON 写入函数将函数写入 JSON 或从 JSON 写入函数。

\n\n

另一种选择可能是尝试重用 Haskell 生成的代码deriving Read并将其移植到 Elm。然而,这可能比它的价值更多的工作,而且我不确定到底如何去做。

\n