Cabal revisions of hgeometry-0.14
Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.
revision 1
-cabal-version: 2.4-name: hgeometry-version: 0.14-synopsis: Geometric Algorithms, Data structures, and Data types.-description:- HGeometry provides some basic geometry types, and geometric algorithms and- data structures for them. The main two focusses are: (1) Strong type safety,- and (2) implementations of geometric algorithms and data structures with good- asymptotic running time guarantees. Note that HGeometry is still highly experimental, don't be surprised to find bugs.--homepage: https://fstaals.net/software/hgeometry-license: BSD-3-Clause-license-file: LICENSE-author: Frank Staals-maintainer: frank@fstaals.net--- copyright:--tested-with: GHC >= 8.8--category: Geometry-build-type: Simple--extra-source-files: README.md- changelog- changelog.org--Extra-doc-files: docs/**/*.png- docs/**/*.jpg-source-repository head- type: git- location: https://github.com/noinia/hgeometry--library- ghc-options: -O2 -Wall -fno-warn-unticked-promoted-constructors -fno-warn-type-defaults-- exposed-modules:- -- * Primitives; Simulating General Position- Algorithms.Geometry.SoS- Algorithms.Geometry.SoS.Symbolic-- -- * Generic Geometry- Data.Geometry- Data.Geometry.Properties- Data.Geometry.Transformation- Data.Geometry.Boundary- Data.Geometry.Duality- Data.Geometry.Directions-- -- * Basic Geometry Types- Data.Geometry.Vector- Data.Geometry.Vector.VectorFixed- Data.Geometry.Vector.VectorFamily-- Data.Geometry.Matrix-- -- Data.Geometry.Vector.Vinyl- Data.Geometry.Interval- Data.Geometry.Point-- Data.Geometry.Line- Data.Geometry.LineSegment- Data.Geometry.LineSegment.Internal- Data.Geometry.SubLine- Data.Geometry.HalfLine- Data.Geometry.PolyLine- Data.Geometry.HyperPlane- Data.Geometry.HalfSpace- Data.Geometry.Triangle- -- Data.Geometry.Plane- Data.Geometry.Slab- Data.Geometry.Box- Data.Geometry.Box.Internal- Data.Geometry.Box.Sides- Data.Geometry.Box.Corners-- Data.Geometry.Ball- Data.Geometry.Ellipse-- Data.Geometry.Polygon- Data.Geometry.Polygon.Bezier- Data.Geometry.Polygon.Inflate- Data.Geometry.Polygon.Convex- Data.Geometry.Polygon.Monotone-- Data.Geometry.BezierSpline-- -- * Geometric Data Structures- Data.Geometry.IntervalTree- Data.Geometry.SegmentTree- Data.Geometry.SegmentTree.Generic-- Data.Geometry.KDTree-- Data.Geometry.PlanarSubdivision- Data.Geometry.PlanarSubdivision.Raw- Data.Geometry.PlanarSubdivision.Dynamic- Data.Geometry.PlanarSubdivision.TreeRep-- Data.Geometry.Arrangement-- Data.Geometry.RangeTree- Data.Geometry.RangeTree.Measure- Data.Geometry.RangeTree.Generic-- Data.Geometry.PrioritySearchTree-- Data.Geometry.QuadTree- Data.Geometry.QuadTree.Cell- Data.Geometry.QuadTree.Quadrants- Data.Geometry.QuadTree.Split- Data.Geometry.QuadTree.Tree-- Data.Geometry.PointLocation- Data.Geometry.PointLocation.PersistentSweep-- Data.Geometry.VerticalRayShooting- Data.Geometry.VerticalRayShooting.PersistentSweep-- -- * Algorithms-- -- * Geometric Algorithms- Algorithms.Geometry.ConvexHull- Algorithms.Geometry.ConvexHull.GrahamScan- Algorithms.Geometry.ConvexHull.DivideAndConquer- Algorithms.Geometry.ConvexHull.QuickHull- Algorithms.Geometry.ConvexHull.JarvisMarch- Algorithms.Geometry.ConvexHull.Naive-- Algorithms.Geometry.LowerEnvelope.DualCH-- Algorithms.Geometry.SmallestEnclosingBall- Algorithms.Geometry.SmallestEnclosingBall.RIC- Algorithms.Geometry.SmallestEnclosingBall.Naive-- Algorithms.Geometry.DelaunayTriangulation.Types- Algorithms.Geometry.DelaunayTriangulation.DivideAndConquer- Algorithms.Geometry.DelaunayTriangulation.Naive-- Algorithms.Geometry.PolyLineSimplification.ImaiIri- Algorithms.Geometry.PolyLineSimplification.DouglasPeucker-- Algorithms.Geometry.EuclideanMST- Algorithms.Geometry.EuclideanMST.EuclideanMST-- Algorithms.Geometry.WSPD- Algorithms.Geometry.WellSeparatedPairDecomposition.WSPD- Algorithms.Geometry.WellSeparatedPairDecomposition.Types-- Algorithms.Geometry.Diameter- Algorithms.Geometry.Diameter.Naive- Algorithms.Geometry.Diameter.ConvexHull-- -- Algorithms.Geometry.Sweep- Algorithms.Geometry.PolygonTriangulation- Algorithms.Geometry.PolygonTriangulation.Types- Algorithms.Geometry.PolygonTriangulation.Triangulate- Algorithms.Geometry.PolygonTriangulation.MakeMonotone- Algorithms.Geometry.PolygonTriangulation.TriangulateMonotone- Algorithms.Geometry.PolygonTriangulation.EarClip-- Algorithms.Geometry.LineSegmentIntersection- Algorithms.Geometry.LineSegmentIntersection.Naive- Algorithms.Geometry.LineSegmentIntersection.BentleyOttmann- Algorithms.Geometry.LineSegmentIntersection.BooleanSweep-- -- Algorithms.Geometry.HiddenSurfaceRemoval.HiddenSurfaceRemoval-- Algorithms.Geometry.ClosestPair- Algorithms.Geometry.ClosestPair.Naive- Algorithms.Geometry.ClosestPair.DivideAndConquer-- Algorithms.Geometry.LinearProgramming.Types- Algorithms.Geometry.LinearProgramming.LP2DRIC-- Algorithms.Geometry.RedBlueSeparator.RIC-- Algorithms.Geometry.FrechetDistance.Discrete-- Algorithms.Geometry.VisibilityPolygon.Lee- Algorithms.Geometry.SSSP- Algorithms.Geometry.SSSP.Naive-- Algorithms.Geometry.RayShooting.Naive-- -- * Embedded Planar Graphs- Data.PlaneGraph- Data.PlaneGraph.AdjRep- Data.PlaneGraph.IO-- -- * Graphics stuff- Graphics.Camera- Graphics.Render-- other-modules:- Data.Geometry.Matrix.Internal- Data.Geometry.Transformation.Internal-- -- * Implementation Internals of Polygons- Data.Geometry.Polygon.Core- Data.Geometry.Polygon.Extremes- Algorithms.Geometry.InPolygon-- Algorithms.Geometry.LineSegmentIntersection.Types- Algorithms.Geometry.SmallestEnclosingBall.Types-- Algorithms.Geometry.WSPD.Types-- Data.Geometry.Vector.VectorFamilyPeano-- Data.Geometry.Point.Internal- Data.Geometry.Point.Orientation- Data.Geometry.Point.Quadrants- Data.Geometry.Point.Orientation.Degenerate- Data.Geometry.Point.Class-- Data.Geometry.Line.Internal--- Data.Geometry.Interval.Util-- Algorithms.Geometry.SoS.Expr- Algorithms.Geometry.SoS.AsPoint- Algorithms.Geometry.SoS.Internal- Algorithms.Geometry.SoS.Orientation- Algorithms.Geometry.SoS.Determinant- Algorithms.Geometry.SoS.Sign-- Data.PlaneGraph.Core-- Data.Geometry.Arrangement.Internal-- Data.Geometry.PlanarSubdivision.Basic- Data.Geometry.PlanarSubdivision.Merge-- -- other-extensions:- build-depends:- base >= 4.11 && < 5- , hgeometry-combinatorial >= 0.13-- , bifunctors >= 4.1- , bytestring >= 0.10- , containers >= 0.5.9- -- , multi-containers >= 0.2- , dlist >= 0.7- , lens >= 4.2- , semigroupoids >= 5- , semigroups >= 0.18- -- , singletons >= 2.0- , linear >= 1.10- , fixed-vector >= 1.0- , vector-builder >= 0.3.7- , vinyl >= 0.10- , deepseq >= 1.1- , fingertree >= 0.1- , MonadRandom >= 0.5- , random >= 1.1- , QuickCheck >= 2.5- , quickcheck-instances >= 0.3- , reflection >= 2.1- , primitive >= 0.6.3.0- , hashable >= 1.2-- -- , singleton-typelits >= 0.1.0.0-- -- , ghc-typelits-natnormalise >= 0.6- -- , ghc-typelits-knownnat >= 0.6-- , vector >= 0.11- , data-clist >= 0.1.2.3- , vector-circular >= 0.1.4- , nonempty-vector >= 0.2.0.0- , text >= 1.1.1.0- , vector-algorithms- , witherable >= 0.4-- , aeson >= 1.0- , yaml >= 0.8-- , mtl >= 2.2- , template-haskell-- , hspec, QuickCheck, quickcheck-instances--- hs-source-dirs: src-- default-language: Haskell2010-- default-extensions: TypeFamilies- , GADTs- , KindSignatures- , DataKinds- , TypeOperators- , ConstraintKinds- , PolyKinds- , RankNTypes- , TypeApplications- , ScopedTypeVariables-- , PatternSynonyms- , TupleSections- , LambdaCase- , ViewPatterns-- , StandaloneDeriving- , GeneralizedNewtypeDeriving- , DeriveFunctor- , DeriveFoldable- , DeriveTraversable- , DeriveGeneric- , DerivingStrategies- , DerivingVia--- , FlexibleInstances- , FlexibleContexts- , MultiParamTypeClasses--test-suite doctests- type: exitcode-stdio-1.0- ghc-options: -threaded- main-is: doctests.hs- build-depends: base- , doctest >= 0.8- , doctest-discover- , QuickCheck- , quickcheck-instances-- default-language: Haskell2010--benchmark benchmarks-- hs-source-dirs: benchmark-- main-is: Benchmarks.hs- type: exitcode-stdio-1.0-- other-modules: Benchmark.Util- Algorithms.Geometry.ConvexHull.Bench- Algorithms.Geometry.ConvexHull.GrahamV2- Algorithms.Geometry.ConvexHull.GrahamFam- -- Algorithms.Geometry.ConvexHull.GrahamFamPeano- Algorithms.Geometry.ConvexHull.GrahamFixed- Data.Geometry.Vector.VectorFamily6- Algorithms.Geometry.ConvexHull.GrahamFam6- Data.Geometry.IntervalTreeBench- -- Demo.ExpectedPairwiseDistance- -- Demo.TriangulateWorld- -- WSPDBench- Algorithms.Geometry.ClosestPair.Bench-- Algorithms.Geometry.LineSegmentIntersection.Bench- Algorithms.Geometry.LineSegmentIntersection.BentleyOttmannOld- Algorithms.Geometry.LineSegmentIntersection.BentleyOttmannNoExt- Algorithms.Geometry.LineSegmentIntersection.TypesNoExt-- Algorithms.Geometry.PolygonTriangulation.Bench- Algorithms.Geometry.PolygonTriangulation.MakeMonotoneOld--- build-depends:- base- , tasty-bench- , fixed-vector- , linear- , semigroups- , deepseq- , deepseq-generics- , hgeometry- , hgeometry-combinatorial- , lens- , semigroupoids- , QuickCheck- , bytestring- , containers- , optparse-applicative- , vinyl- , vector- , dlist- , mtl- , vector-circular- , MonadRandom- , hashable--- ghc-options: -Wall -O2 -rtsopts -fno-warn-unticked-promoted-constructors-- default-language: Haskell2010-- default-extensions: TypeFamilies- , GADTs- , KindSignatures- , DataKinds- , TypeOperators- , ConstraintKinds- , PolyKinds- , RankNTypes- , TypeApplications- , ScopedTypeVariables-- , PatternSynonyms- , ViewPatterns- , LambdaCase- , TupleSections--- , StandaloneDeriving- , GeneralizedNewtypeDeriving- , DeriveFunctor- , DeriveFoldable- , DeriveTraversable-- , FlexibleInstances- , FlexibleContexts- , MultiParamTypeClasses- , DerivingStrategies- , DeriveGeneric+cabal-version: 2.4 +name: hgeometry +version: 0.14 +x-revision: 1 +synopsis: Geometric Algorithms, Data structures, and Data types. +description: + HGeometry provides some basic geometry types, and geometric algorithms and + data structures for them. The main two focusses are: (1) Strong type safety, + and (2) implementations of geometric algorithms and data structures with good + asymptotic running time guarantees. Note that HGeometry is still highly experimental, don't be surprised to find bugs. + +homepage: https://fstaals.net/software/hgeometry +license: BSD-3-Clause +license-file: LICENSE +author: Frank Staals +maintainer: frank@fstaals.net +-- copyright: + +tested-with: GHC >= 8.8 + +category: Geometry +build-type: Simple + +extra-source-files: README.md + changelog + changelog.org + +Extra-doc-files: docs/**/*.png + docs/**/*.jpg +source-repository head + type: git + location: https://github.com/noinia/hgeometry + +library + ghc-options: -O2 -Wall -fno-warn-unticked-promoted-constructors -fno-warn-type-defaults + + exposed-modules: + -- * Primitives; Simulating General Position + Algorithms.Geometry.SoS + Algorithms.Geometry.SoS.Symbolic + + -- * Generic Geometry + Data.Geometry + Data.Geometry.Properties + Data.Geometry.Transformation + Data.Geometry.Boundary + Data.Geometry.Duality + Data.Geometry.Directions + + -- * Basic Geometry Types + Data.Geometry.Vector + Data.Geometry.Vector.VectorFixed + Data.Geometry.Vector.VectorFamily + + Data.Geometry.Matrix + + -- Data.Geometry.Vector.Vinyl + Data.Geometry.Interval + Data.Geometry.Point + + Data.Geometry.Line + Data.Geometry.LineSegment + Data.Geometry.LineSegment.Internal + Data.Geometry.SubLine + Data.Geometry.HalfLine + Data.Geometry.PolyLine + Data.Geometry.HyperPlane + Data.Geometry.HalfSpace + Data.Geometry.Triangle + -- Data.Geometry.Plane + Data.Geometry.Slab + Data.Geometry.Box + Data.Geometry.Box.Internal + Data.Geometry.Box.Sides + Data.Geometry.Box.Corners + + Data.Geometry.Ball + Data.Geometry.Ellipse + + Data.Geometry.Polygon + Data.Geometry.Polygon.Bezier + Data.Geometry.Polygon.Inflate + Data.Geometry.Polygon.Convex + Data.Geometry.Polygon.Monotone + + Data.Geometry.BezierSpline + + -- * Geometric Data Structures + Data.Geometry.IntervalTree + Data.Geometry.SegmentTree + Data.Geometry.SegmentTree.Generic + + Data.Geometry.KDTree + + Data.Geometry.PlanarSubdivision + Data.Geometry.PlanarSubdivision.Raw + Data.Geometry.PlanarSubdivision.Dynamic + Data.Geometry.PlanarSubdivision.TreeRep + + Data.Geometry.Arrangement + + Data.Geometry.RangeTree + Data.Geometry.RangeTree.Measure + Data.Geometry.RangeTree.Generic + + Data.Geometry.PrioritySearchTree + + Data.Geometry.QuadTree + Data.Geometry.QuadTree.Cell + Data.Geometry.QuadTree.Quadrants + Data.Geometry.QuadTree.Split + Data.Geometry.QuadTree.Tree + + Data.Geometry.PointLocation + Data.Geometry.PointLocation.PersistentSweep + + Data.Geometry.VerticalRayShooting + Data.Geometry.VerticalRayShooting.PersistentSweep + + -- * Algorithms + + -- * Geometric Algorithms + Algorithms.Geometry.ConvexHull + Algorithms.Geometry.ConvexHull.GrahamScan + Algorithms.Geometry.ConvexHull.DivideAndConquer + Algorithms.Geometry.ConvexHull.QuickHull + Algorithms.Geometry.ConvexHull.JarvisMarch + Algorithms.Geometry.ConvexHull.Naive + + Algorithms.Geometry.LowerEnvelope.DualCH + + Algorithms.Geometry.SmallestEnclosingBall + Algorithms.Geometry.SmallestEnclosingBall.RIC + Algorithms.Geometry.SmallestEnclosingBall.Naive + + Algorithms.Geometry.DelaunayTriangulation.Types + Algorithms.Geometry.DelaunayTriangulation.DivideAndConquer + Algorithms.Geometry.DelaunayTriangulation.Naive + + Algorithms.Geometry.PolyLineSimplification.ImaiIri + Algorithms.Geometry.PolyLineSimplification.DouglasPeucker + + Algorithms.Geometry.EuclideanMST + Algorithms.Geometry.EuclideanMST.EuclideanMST + + Algorithms.Geometry.WSPD + Algorithms.Geometry.WellSeparatedPairDecomposition.WSPD + Algorithms.Geometry.WellSeparatedPairDecomposition.Types + + Algorithms.Geometry.Diameter + Algorithms.Geometry.Diameter.Naive + Algorithms.Geometry.Diameter.ConvexHull + + -- Algorithms.Geometry.Sweep + Algorithms.Geometry.PolygonTriangulation + Algorithms.Geometry.PolygonTriangulation.Types + Algorithms.Geometry.PolygonTriangulation.Triangulate + Algorithms.Geometry.PolygonTriangulation.MakeMonotone + Algorithms.Geometry.PolygonTriangulation.TriangulateMonotone + Algorithms.Geometry.PolygonTriangulation.EarClip + + Algorithms.Geometry.LineSegmentIntersection + Algorithms.Geometry.LineSegmentIntersection.Naive + Algorithms.Geometry.LineSegmentIntersection.BentleyOttmann + Algorithms.Geometry.LineSegmentIntersection.BooleanSweep + + -- Algorithms.Geometry.HiddenSurfaceRemoval.HiddenSurfaceRemoval + + Algorithms.Geometry.ClosestPair + Algorithms.Geometry.ClosestPair.Naive + Algorithms.Geometry.ClosestPair.DivideAndConquer + + Algorithms.Geometry.LinearProgramming.Types + Algorithms.Geometry.LinearProgramming.LP2DRIC + + Algorithms.Geometry.RedBlueSeparator.RIC + + Algorithms.Geometry.FrechetDistance.Discrete + + Algorithms.Geometry.VisibilityPolygon.Lee + Algorithms.Geometry.SSSP + Algorithms.Geometry.SSSP.Naive + + Algorithms.Geometry.RayShooting.Naive + + -- * Embedded Planar Graphs + Data.PlaneGraph + Data.PlaneGraph.AdjRep + Data.PlaneGraph.IO + + -- * Graphics stuff + Graphics.Camera + Graphics.Render + + other-modules: + Data.Geometry.Matrix.Internal + Data.Geometry.Transformation.Internal + + -- * Implementation Internals of Polygons + Data.Geometry.Polygon.Core + Data.Geometry.Polygon.Extremes + Algorithms.Geometry.InPolygon + + Algorithms.Geometry.LineSegmentIntersection.Types + Algorithms.Geometry.SmallestEnclosingBall.Types + + Algorithms.Geometry.WSPD.Types + + Data.Geometry.Vector.VectorFamilyPeano + + Data.Geometry.Point.Internal + Data.Geometry.Point.Orientation + Data.Geometry.Point.Quadrants + Data.Geometry.Point.Orientation.Degenerate + Data.Geometry.Point.Class + + Data.Geometry.Line.Internal + + + Data.Geometry.Interval.Util + + Algorithms.Geometry.SoS.Expr + Algorithms.Geometry.SoS.AsPoint + Algorithms.Geometry.SoS.Internal + Algorithms.Geometry.SoS.Orientation + Algorithms.Geometry.SoS.Determinant + Algorithms.Geometry.SoS.Sign + + Data.PlaneGraph.Core + + Data.Geometry.Arrangement.Internal + + Data.Geometry.PlanarSubdivision.Basic + Data.Geometry.PlanarSubdivision.Merge + + -- other-extensions: + build-depends: + base >= 4.11 && < 5 + , hgeometry-combinatorial >= 0.13 && < 1 + + , bifunctors >= 4.1 + , bytestring >= 0.10 + , containers >= 0.5.9 + -- , multi-containers >= 0.2 + , dlist >= 0.7 + , lens >= 4.2 + , semigroupoids >= 5 + , semigroups >= 0.18 + -- , singletons >= 2.0 + , linear >= 1.10 + , fixed-vector >= 1.0 + , vector-builder >= 0.3.7 + , vinyl >= 0.10 + , deepseq >= 1.1 + , fingertree >= 0.1 + , MonadRandom >= 0.5 + , random >= 1.1 + , QuickCheck >= 2.5 + , quickcheck-instances >= 0.3 + , reflection >= 2.1 + , primitive >= 0.6.3.0 + , hashable >= 1.2 + + -- , singleton-typelits >= 0.1.0.0 + + -- , ghc-typelits-natnormalise >= 0.6 + -- , ghc-typelits-knownnat >= 0.6 + + , vector >= 0.11 + , data-clist >= 0.1.2.3 + , vector-circular >= 0.1.4 + , nonempty-vector >= 0.2.0.0 + , text >= 1.1.1.0 + , vector-algorithms + , witherable >= 0.4 + + , aeson >= 1.0 + , yaml >= 0.8 + + , mtl >= 2.2 + , template-haskell + + , hspec, QuickCheck, quickcheck-instances + + + hs-source-dirs: src + + default-language: Haskell2010 + + default-extensions: TypeFamilies + , GADTs + , KindSignatures + , DataKinds + , TypeOperators + , ConstraintKinds + , PolyKinds + , RankNTypes + , TypeApplications + , ScopedTypeVariables + + , PatternSynonyms + , TupleSections + , LambdaCase + , ViewPatterns + + , StandaloneDeriving + , GeneralizedNewtypeDeriving + , DeriveFunctor + , DeriveFoldable + , DeriveTraversable + , DeriveGeneric + , DerivingStrategies + , DerivingVia + + + , FlexibleInstances + , FlexibleContexts + , MultiParamTypeClasses + +test-suite doctests + type: exitcode-stdio-1.0 + ghc-options: -threaded + main-is: doctests.hs + build-depends: base + , doctest >= 0.8 + , doctest-discover + , QuickCheck + , quickcheck-instances + + default-language: Haskell2010 + +benchmark benchmarks + + hs-source-dirs: benchmark + + main-is: Benchmarks.hs + type: exitcode-stdio-1.0 + + other-modules: Benchmark.Util + Algorithms.Geometry.ConvexHull.Bench + Algorithms.Geometry.ConvexHull.GrahamV2 + Algorithms.Geometry.ConvexHull.GrahamFam + -- Algorithms.Geometry.ConvexHull.GrahamFamPeano + Algorithms.Geometry.ConvexHull.GrahamFixed + Data.Geometry.Vector.VectorFamily6 + Algorithms.Geometry.ConvexHull.GrahamFam6 + Data.Geometry.IntervalTreeBench + -- Demo.ExpectedPairwiseDistance + -- Demo.TriangulateWorld + -- WSPDBench + Algorithms.Geometry.ClosestPair.Bench + + Algorithms.Geometry.LineSegmentIntersection.Bench + Algorithms.Geometry.LineSegmentIntersection.BentleyOttmannOld + Algorithms.Geometry.LineSegmentIntersection.BentleyOttmannNoExt + Algorithms.Geometry.LineSegmentIntersection.TypesNoExt + + Algorithms.Geometry.PolygonTriangulation.Bench + Algorithms.Geometry.PolygonTriangulation.MakeMonotoneOld + + + build-depends: + base + , tasty-bench + , fixed-vector + , linear + , semigroups + , deepseq + , deepseq-generics + , hgeometry + , hgeometry-combinatorial + , lens + , semigroupoids + , QuickCheck + , bytestring + , containers + , optparse-applicative + , vinyl + , vector + , dlist + , mtl + , vector-circular + , MonadRandom + , hashable + + + ghc-options: -Wall -O2 -rtsopts -fno-warn-unticked-promoted-constructors + + default-language: Haskell2010 + + default-extensions: TypeFamilies + , GADTs + , KindSignatures + , DataKinds + , TypeOperators + , ConstraintKinds + , PolyKinds + , RankNTypes + , TypeApplications + , ScopedTypeVariables + + , PatternSynonyms + , ViewPatterns + , LambdaCase + , TupleSections + + + , StandaloneDeriving + , GeneralizedNewtypeDeriving + , DeriveFunctor + , DeriveFoldable + , DeriveTraversable + + , FlexibleInstances + , FlexibleContexts + , MultiParamTypeClasses + , DerivingStrategies + , DeriveGeneric