-- TODO: check for closed ring


_PolygonPoints ::
  (BaseType a, ListLike f (Geometry Point a)) =>
  Prism' (f (Geometry Point a)) (Geometry Polygon a)
_PolygonPoints = prism'
  (foldMap (pure . Point)  . review _Geometry)
  (pure . Polygon . foldMap (pure . review _Geometry))
_PolygonPoints ::
  (BaseType a, ListLike f (Geometry Point a)) =>
  Prism' (f (Geometry Point a)) (Geometry Polygon a)
_PolygonPoints = prism'
  (foldMap (pure . Point)  . review _Geometry)
  (pure . Polygon . foldMap (pure . review _Geometry))
_PolygonPoints = prism'
  (foldMap (pure . Point)  . review _Geometry)
  (pure . Polygon . foldMap (pure . review _Geometry))