Ian's solution is quite nice. Another way to go is that if you also have a 
json decoder to have an elm-test case that ensures that accountToJson >> 
jsonToAccount is an identity operation. For the decoder you would already 
get a type error and probably remember to add the new field in the encoder 
as well, but if you forget it the tests would have your back.

On Friday, April 7, 2017 at 2:48:25 PM UTC+2, Andres Riofrio wrote:
>
> For example, I have the following code:
>
> type alias Account =
>   { id : Int
>   , name : String }
>
> -- ... in another module ...
>
> accountToJson : Account -> Json.Encode.Value
> accountToJson act = Json.Encode.object
>   [ ("id", Json.Encode.int act.id)
>   , ("name", Json.Encode.string act.name)
>   ]
>
> If I add a field to Account, I'd like the compiler to make sure it won't 
> be skipped in the output JSON. The way I have written the encoder, the 
> compiler will happily let me skip the field in the serialized version of my 
> data.
>
> I thought about using destructuring like so:
>
> accountToJson : Account -> Json.Encode.Value
> accountToJson {id, name} = Json.Encode.object
>   [ ("id", Json.Encode.int id)
>   , ("name", Json.Encode.string name)
>   ]
>
>
>
> But according to the documentation 
> <http://elm-lang.org/docs/records#pattern-matching>, this will compile 
> fine even if Account gains a new record.
>
> Any ideas on how to add this bit of type-safety to my application?
>

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to