Struggling to figure this out, but it may be because I'm in an open plan 
office and its just too noisy to concentrate...

Suppose I have decoders for two records:

type alias Circle =  { radius : Float }
type alias Rectangle = { width: Float, height: Float }

On the server side though, these are actually a class hierarchy, with

Circle <: Shape
Rectangle <: Shape

Where <: means 'subtype of'.

When serializing over json, a discriminator field is added, so the json 
looks like:

{
  @type : "Circle",
  radius : ...
}

{
  @type : "Rectangle",
  width : ...
}

I have decoders for circles and rectangles already defined:

circleDecoder : Decoder Circle
rectangleDecoder : Decoder Rectangle

and am now trying to write the decoder for Shape:

type Shape = 
   CircleAsShape Circle
 | RectangleAsShape Rectangle

shapeDecoder : Decoder Shape
shapeDecoder = 
  succeed (some function from '@type' to circle or rectangle decoder mapped 
to shape decoder)
  |: (field "@type" Decode.string)

Feels about the right form for it. Exception this will return a Decoder 
(Decoder Shape) instead of a Decoder Shape.

Can someone explain how to do this?

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