2013-08-30 8 views
5

Attualmente sto scrivendo un gioco online in cui utilizzo Haskell per il back-end lato server ed Elm per il frontend/rendering.Elm ha un equivalente di "Read" di Haskell

In questo momento ho il mio GameState come un grande ADT, in un tipo abbastanza semplice da poterlo usare anche in Elm. Speravo di evitare l'uso di JSON e di passare semplicemente ad Elm l'output di "show" sui dati, che potrei quindi analizzare in un ADT in Elm.

Mi chiedo, c'è qualcosa di equivalente alla "lettura" di haskell che può guardare automaticamente una stringa prodotta da show e riascoltarla nei dati? In caso contrario, sono disponibili librerie di parser esistenti per Elm?

Se devo finire con JSON, esiste un modo per convertirlo automaticamente in un ADT? (Qualcosa di simile a FromJSON di Esone, forse?)

risposta

4

mia comprensione è che Elm-che non hanno typeclasses-non possono avere facilmente una versione polimorfica di read o fromJSON. Inoltre, non credo che abbia delle buone strutture per la programmazione generica, quindi implementare qualcosa di simile a deriving o OCaml with sarebbe difficile.

Sfortunatamente, ciò significa che la soluzione migliore è scrivere funzioni una tantum per serializzare e deserializzare i vari tipi che si utilizzano. È possibile utilizzare aeson sul lato Haskell e quindi scrivere funzioni su/da JSON utilizzando Elm's JSON library.

Un'altra opzione potrebbe essere quella di provare a riutilizzare il codice prodotto da Haskell deriving Read e portarlo su Elm. Tuttavia, questo potrebbe essere più lavoro di quello che vale, e non sono sicuro di come farlo, esattamente.

+0

Questo è esattamente il motivo per cui ho deciso di aspettare che l'olmo maturasse di più prima di usarlo seriamente. –

+0

@johanatan cosa usi per il frontend? JavaScript non ha classi di tipi. –

+1

@samboosalis: È possibile compilare Haskell su JavaScript con Haste o GHCJS, che supportano entrambi i tipi di caratteri. –