С
type alias Position = { x : Float, y : Float }
type alias Velocity = { vx : Float, vy : Float }
type alias CircleData = { radius : Float }
type alias RectangleData = { height : Float, width : Float }
type Shape = Circle CircleData | Rectangle RectangleData
type alias Body = { position : Position , shape : Shape , velocity : Velocity }
type alias Rounded a = { a | shape : CircleData }
type alias Boxed a = { a | shape : RectangleData }