Your type "Players" is recursive in a way you almost certainly did not intend. That's what leads to this mismatch.
> Am 16.09.2016 um 04:09 schrieb Mohammad Samman <[email protected]>: > > I have the following elm code: > > import Json.Decode as Json exposing(..) > import Result > > type Players = Players (List Players) > type alias Player = { > name: String > , team: Maybe Team > } > > type alias Team = { > name: String > , players: Maybe Players > } > > teamDecoder: Json.Decoder Team > teamDecoder = > Json.object2 Team ("name" := Json.string) (Json.maybe ("players" := > playersDecoder)) > > playersDecoder: Json.Decoder Players > playersDecoder = > Json.customDecoder (Json.list playerDecoder) (\pl -> > Result.Ok (Players pl) > ) > > playerDecoder: Json.Decoder Player > playerDecoder = > Json.object2 Player ("name" := Json.string) (Json.maybe ("team" := > teamDecoder)) > > Compiling give me the following error > > -- TYPE MISMATCH > --------------------------------------------------------------- > The 2nd argument to function `customDecoder` is causing a mismatch. > 26|> Json.customDecoder (Json.list playerDecoder) (\pl -> > 27|> Result.Ok (Players pl) > Function `customDecoder` is expecting the 2nd argument to be: > List { name : String, team : Maybe Team } -> Result String a > But it is: > List Players -> Result a Players > Hint: I always figure out the type of arguments from left to right. If an > argument is acceptable when I check it, I assume it is "correct" in subsequent > checks. So the problem may actually be in how previous arguments interact with > the 2nd. > > I'm wondering why this is the case? Shouldn't the pl variable inside of the > anon func be a List Players based on the type signature of > Json.customDecoder? How can I decode into the Team type alias? > > Thanks! > -- > 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. -- 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.
