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.