Skip to content
loading...

re: Keeping decoders simple VIEW POST

FULL DISCUSSION
 

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 =
    Decode.map4
        (\id species name owner -> Individual id species name owner)
        (Decode.field "id" Decode.int)
        (Decode.field "species" Decode.string)
        (Decode.field "name" Decode.string)
        (Decode.maybe <| Decode.field "owner" Decode.int)
  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 ->
            petsCaredFor

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

                _ ->
                    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