chpatrick / codec

Easy bidirectional serialization in Haskell
BSD 3-Clause "New" or "Revised" License
50 stars 6 forks source link

ADTs example #10

Open BebeSparkelSparkel opened 3 years ago

BebeSparkelSparkel commented 3 years ago

I have figured out how to parse an ADT but am not sure how to serialize it well. Instead of the constructor being the initial function, a function that picks the constructor would be the starting function. However, I am not sure how to continue from there.

Using JSON:

data StringEncoded
  = Date Year Month Day
  | Money Currency Int

stringEncodedObjCodec :: JSONCodec StringEncoded
stringEncodedObjCodec = ???
BebeSparkelSparkel commented 3 years ago

Json data

{"type": "date"
,"year": 1234
,"month": 5
,"day": 6
}
{"type": "money"
,"currency": "USD"
,"amount": 1234
}