2013-08-30 8 views
5

Obecnie piszę gry online gdzie używam Haskell dla backend po stronie serwera i wiąz na frontend/renderowania.Czy Elm mieć równowartość Haskell w „Czytaj”

Teraz mam GameState jako jeden wielki ADT, w rodzaju na tyle prosty, że można go używać w Elm, jak również. Miałem nadzieję, że nie będę używał JSON i po prostu przekazuję Elmowi wynik "show" na danych, który mógłbym następnie przetworzyć z powrotem w ADT w Elm.

Zastanawiam się, czy jest coś, co odpowiada Haskell'a „czytać”, który może automatycznie spojrzeć na wyjściu smyczkowy koncert i analizować je z powrotem na dane? Jeśli nie, czy istnieją dostępne biblioteki parserów dla Elma?

Gdybym nie kończy się dzieje z JSON, czy istnieje sposób, aby automatycznie przekształcić go w ADT? (Coś podobnego do ajzon za FromJSON, być może?)

Odpowiedz

4

Rozumiem, że Elm-nie posiadające typeclasses-nie może łatwo mieć polimorficzny wersję read lub fromJSON. Nie wierzę też, że ma dobre zaplecze do programowania ogólnego, więc wdrożenie czegoś podobnego do deriving lub OCaml's with również byłoby trudne.

Niestety, oznacza to najlepiej jest napisać funkcje jednorazowych dla szeregowania i deserializacji różnych rodzajów użyć. Możesz użyć aesonu po stronie Haskella, a następnie pisać funkcje do/z JSON używając Elm's JSON library.

Inną opcją może być próba ponownego użycia kodu wyprodukowanego przez Haskell's deriving Read i przeniesienie go do Wiązu. Jednak może to być więcej pracy niż jest warte, i nie jestem pewien, jak to zrobić, dokładnie.

+0

Właśnie dlatego postanowiłem poczekać, aż Wiąz dojrzeje, zanim potraktuje to poważnie. –

+0

@johanatan co używasz na interfejsie? JavaScript nie ma również klas typów. –

+1

@samboosalis: Możesz skompilować Haskella do JavaScript za pomocą Haste lub GHCJS, które wspierają typeclasses. –

Powiązane problemy