5

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

现在我将我的 GameState 作为一个大 ADT,其类型非常简单,我也可以在 Elm 中使用它。我希望避免使用 JSON,并简单地将 Elm 的“show”输出传递给数据,然后我可以将其解析回 Elm 中的 ADT。

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

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

4

1 回答 1

4

我的理解是,没有类型类的 Elm 不能轻易地拥有or的多态版本。我也不相信它对泛型编程有任何好的设施,所以实现类似于OCaml 的东西也很困难。readfromJSONderivingwith

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

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

于 2013-08-31T04:33:28.353 回答