Skip to content

re: Keeping decoders simple VIEW POST


Great write up! Thank you very much for sharing your experience with us.

I cached two errors when trying your code in Ellie.

  1. The individualDecoder should be like this:
individualDecoder : Decoder Individual
individualDecoder =
        (\id species name owner -> Individual id species name owner)
        (Decode.field "id"
        (Decode.field "species" Decode.string)
        (Decode.field "name" Decode.string)
        (Decode.maybe <| Decode.field "owner"
  1. The addIfPet function should be like this:
addIfPet : Individual -> Dict Int (List Pet) -> Dict Int (List Pet)
addIfPet individual petsCaredFor =
    case pet individual of
        Nothing ->

        Just newPet ->
            case individual.owner of
                Just ownerid ->
                    Dict.update ownerid (Just << addOrInit newPet) petsCaredFor

                _ ->

I made the change accordingly in my Ellie and print some debug info on screen to visualize the decoding and converting process


Amazing, thank you! Would you be okay if I linked your Ellie instead of mine from the post? I'll attribute it to you of course!


Sure, That's totally fine. I'm glad it helped.

code of conduct - report abuse