geojson 4.1.1 → 4.1.2
raw patch · 4 files changed
+21/−13 lines, 4 filesdep ~bytestringdep ~containersdep ~deepseqPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: bytestring, containers, deepseq, hspec, tasty, tasty-quickcheck, text
API changes (from Hackage documentation)
- Data.Geospatial.Internal.BasicTypes: instance GHC.Generics.Generic Data.Geospatial.Internal.BasicTypes.BoundingBoxWithoutCRS
- Data.Geospatial.Internal.BasicTypes: instance GHC.Generics.Generic Data.Geospatial.Internal.BasicTypes.DoubleArray
- Data.Geospatial.Internal.BasicTypes: instance GHC.Generics.Generic Data.Geospatial.Internal.BasicTypes.FeatureID
- Data.Geospatial.Internal.BasicTypes: instance GHC.Generics.Generic Data.Geospatial.Internal.BasicTypes.GeoPositionWithoutCRS
- Data.Geospatial.Internal.BasicTypes: instance GHC.Generics.Generic Data.Geospatial.Internal.BasicTypes.PointXY
- Data.Geospatial.Internal.BasicTypes: instance GHC.Generics.Generic Data.Geospatial.Internal.BasicTypes.PointXYZ
- Data.Geospatial.Internal.BasicTypes: instance GHC.Generics.Generic Data.Geospatial.Internal.BasicTypes.PointXYZM
- Data.Geospatial.Internal.BasicTypes: instance GHC.Show.Show Data.Geospatial.Internal.BasicTypes.BoundingBoxWithoutCRS
- Data.Geospatial.Internal.BasicTypes: instance GHC.Show.Show Data.Geospatial.Internal.BasicTypes.DoubleArray
- Data.Geospatial.Internal.BasicTypes: instance GHC.Show.Show Data.Geospatial.Internal.BasicTypes.FeatureID
- Data.Geospatial.Internal.BasicTypes: instance GHC.Show.Show Data.Geospatial.Internal.BasicTypes.GeoPositionWithoutCRS
- Data.Geospatial.Internal.BasicTypes: instance GHC.Show.Show Data.Geospatial.Internal.BasicTypes.PointXY
- Data.Geospatial.Internal.BasicTypes: instance GHC.Show.Show Data.Geospatial.Internal.BasicTypes.PointXYZ
- Data.Geospatial.Internal.BasicTypes: instance GHC.Show.Show Data.Geospatial.Internal.BasicTypes.PointXYZM
- Data.Geospatial.Internal.CRS: instance GHC.Show.Show Data.Geospatial.Internal.CRS.CRSObject
- Data.Geospatial.Internal.GeoFeature: instance GHC.Generics.Generic (Data.Geospatial.Internal.GeoFeature.GeoFeature a)
- Data.Geospatial.Internal.GeoFeature: instance GHC.Show.Show a => GHC.Show.Show (Data.Geospatial.Internal.GeoFeature.GeoFeature a)
- Data.Geospatial.Internal.GeoFeatureCollection: instance GHC.Show.Show a => GHC.Show.Show (Data.Geospatial.Internal.GeoFeatureCollection.GeoFeatureCollection a)
- Data.Geospatial.Internal.Geometry: instance GHC.Generics.Generic Data.Geospatial.Internal.Geometry.GeospatialGeometry
- Data.Geospatial.Internal.Geometry: instance GHC.Show.Show Data.Geospatial.Internal.Geometry.GeospatialGeometry
- Data.Geospatial.Internal.Geometry.GeoLine: instance GHC.Generics.Generic Data.Geospatial.Internal.Geometry.GeoLine.GeoLine
- Data.Geospatial.Internal.Geometry.GeoLine: instance GHC.Show.Show Data.Geospatial.Internal.Geometry.GeoLine.GeoLine
- Data.Geospatial.Internal.Geometry.GeoMultiLine: instance GHC.Generics.Generic Data.Geospatial.Internal.Geometry.GeoMultiLine.GeoMultiLine
- Data.Geospatial.Internal.Geometry.GeoMultiLine: instance GHC.Show.Show Data.Geospatial.Internal.Geometry.GeoMultiLine.GeoMultiLine
- Data.Geospatial.Internal.Geometry.GeoMultiPoint: instance GHC.Generics.Generic Data.Geospatial.Internal.Geometry.GeoMultiPoint.GeoMultiPoint
- Data.Geospatial.Internal.Geometry.GeoMultiPoint: instance GHC.Show.Show Data.Geospatial.Internal.Geometry.GeoMultiPoint.GeoMultiPoint
- Data.Geospatial.Internal.Geometry.GeoMultiPolygon: instance GHC.Generics.Generic Data.Geospatial.Internal.Geometry.GeoMultiPolygon.GeoMultiPolygon
- Data.Geospatial.Internal.Geometry.GeoMultiPolygon: instance GHC.Show.Show Data.Geospatial.Internal.Geometry.GeoMultiPolygon.GeoMultiPolygon
- Data.Geospatial.Internal.Geometry.GeoPoint: instance GHC.Generics.Generic Data.Geospatial.Internal.Geometry.GeoPoint.GeoPoint
- Data.Geospatial.Internal.Geometry.GeoPoint: instance GHC.Show.Show Data.Geospatial.Internal.Geometry.GeoPoint.GeoPoint
- Data.Geospatial.Internal.Geometry.GeoPolygon: instance GHC.Generics.Generic Data.Geospatial.Internal.Geometry.GeoPolygon.GeoPolygon
- Data.Geospatial.Internal.Geometry.GeoPolygon: instance GHC.Show.Show Data.Geospatial.Internal.Geometry.GeoPolygon.GeoPolygon
- Data.LineString: instance (Data.Aeson.Types.FromJSON.FromJSON a, GHC.Show.Show a) => Data.Aeson.Types.FromJSON.FromJSON (Data.LineString.LineString a)
- Data.LineString: instance Data.Foldable.Foldable Data.LineString.LineString
- Data.LineString: instance Data.Traversable.Traversable Data.LineString.LineString
- Data.LineString: instance GHC.Base.Functor Data.LineString.LineString
- Data.LineString: instance GHC.Generics.Generic (Data.LineString.LineString a)
- Data.LineString: instance GHC.Show.Show Data.LineString.ListToLineStringError
- Data.LineString: instance GHC.Show.Show Data.LineString.SequenceToLineStringError
- Data.LineString: instance GHC.Show.Show a => GHC.Show.Show (Data.LineString.LineString a)
- Data.LinearRing: instance (GHC.Classes.Eq a, Data.Aeson.Types.FromJSON.FromJSON a, GHC.Show.Show a) => Data.Aeson.Types.FromJSON.FromJSON (Data.LinearRing.LinearRing a)
- Data.LinearRing: instance Data.Foldable.Foldable Data.LinearRing.LinearRing
- Data.LinearRing: instance Data.Traversable.Traversable Data.LinearRing.LinearRing
- Data.LinearRing: instance GHC.Base.Functor Data.LinearRing.LinearRing
- Data.LinearRing: instance GHC.Generics.Generic (Data.LinearRing.LinearRing a)
- Data.LinearRing: instance GHC.Show.Show a => GHC.Show.Show (Data.LinearRing.LinearRing a)
- Data.LinearRing: instance GHC.Show.Show a => GHC.Show.Show (Data.LinearRing.ListToLinearRingError a)
- Data.LinearRing: instance GHC.Show.Show a => GHC.Show.Show (Data.LinearRing.SequenceToLinearRingError a)
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.BasicTypes.BoundingBoxWithoutCRS
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.BasicTypes.DoubleArray
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.BasicTypes.FeatureID
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.BasicTypes.GeoPositionWithoutCRS
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.BasicTypes.PointXY
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.BasicTypes.PointXYZ
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.BasicTypes.PointXYZM
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Show.Show Data.Geospatial.Internal.BasicTypes.BoundingBoxWithoutCRS
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Show.Show Data.Geospatial.Internal.BasicTypes.DoubleArray
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Show.Show Data.Geospatial.Internal.BasicTypes.FeatureID
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Show.Show Data.Geospatial.Internal.BasicTypes.GeoPositionWithoutCRS
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Show.Show Data.Geospatial.Internal.BasicTypes.PointXY
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Show.Show Data.Geospatial.Internal.BasicTypes.PointXYZ
+ Data.Geospatial.Internal.BasicTypes: instance GHC.Internal.Show.Show Data.Geospatial.Internal.BasicTypes.PointXYZM
+ Data.Geospatial.Internal.CRS: instance GHC.Internal.Show.Show Data.Geospatial.Internal.CRS.CRSObject
+ Data.Geospatial.Internal.GeoFeature: instance GHC.Internal.Generics.Generic (Data.Geospatial.Internal.GeoFeature.GeoFeature a)
+ Data.Geospatial.Internal.GeoFeature: instance GHC.Internal.Show.Show a => GHC.Internal.Show.Show (Data.Geospatial.Internal.GeoFeature.GeoFeature a)
+ Data.Geospatial.Internal.GeoFeatureCollection: instance GHC.Internal.Show.Show a => GHC.Internal.Show.Show (Data.Geospatial.Internal.GeoFeatureCollection.GeoFeatureCollection a)
+ Data.Geospatial.Internal.Geometry: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.Geometry.GeospatialGeometry
+ Data.Geospatial.Internal.Geometry: instance GHC.Internal.Show.Show Data.Geospatial.Internal.Geometry.GeospatialGeometry
+ Data.Geospatial.Internal.Geometry.GeoLine: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.Geometry.GeoLine.GeoLine
+ Data.Geospatial.Internal.Geometry.GeoLine: instance GHC.Internal.Show.Show Data.Geospatial.Internal.Geometry.GeoLine.GeoLine
+ Data.Geospatial.Internal.Geometry.GeoMultiLine: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.Geometry.GeoMultiLine.GeoMultiLine
+ Data.Geospatial.Internal.Geometry.GeoMultiLine: instance GHC.Internal.Show.Show Data.Geospatial.Internal.Geometry.GeoMultiLine.GeoMultiLine
+ Data.Geospatial.Internal.Geometry.GeoMultiPoint: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.Geometry.GeoMultiPoint.GeoMultiPoint
+ Data.Geospatial.Internal.Geometry.GeoMultiPoint: instance GHC.Internal.Show.Show Data.Geospatial.Internal.Geometry.GeoMultiPoint.GeoMultiPoint
+ Data.Geospatial.Internal.Geometry.GeoMultiPolygon: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.Geometry.GeoMultiPolygon.GeoMultiPolygon
+ Data.Geospatial.Internal.Geometry.GeoMultiPolygon: instance GHC.Internal.Show.Show Data.Geospatial.Internal.Geometry.GeoMultiPolygon.GeoMultiPolygon
+ Data.Geospatial.Internal.Geometry.GeoPoint: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.Geometry.GeoPoint.GeoPoint
+ Data.Geospatial.Internal.Geometry.GeoPoint: instance GHC.Internal.Show.Show Data.Geospatial.Internal.Geometry.GeoPoint.GeoPoint
+ Data.Geospatial.Internal.Geometry.GeoPolygon: instance GHC.Internal.Generics.Generic Data.Geospatial.Internal.Geometry.GeoPolygon.GeoPolygon
+ Data.Geospatial.Internal.Geometry.GeoPolygon: instance GHC.Internal.Show.Show Data.Geospatial.Internal.Geometry.GeoPolygon.GeoPolygon
+ Data.LineString: instance (Data.Aeson.Types.FromJSON.FromJSON a, GHC.Internal.Show.Show a) => Data.Aeson.Types.FromJSON.FromJSON (Data.LineString.LineString a)
+ Data.LineString: instance GHC.Internal.Base.Functor Data.LineString.LineString
+ Data.LineString: instance GHC.Internal.Data.Foldable.Foldable Data.LineString.LineString
+ Data.LineString: instance GHC.Internal.Data.Traversable.Traversable Data.LineString.LineString
+ Data.LineString: instance GHC.Internal.Generics.Generic (Data.LineString.LineString a)
+ Data.LineString: instance GHC.Internal.Show.Show Data.LineString.ListToLineStringError
+ Data.LineString: instance GHC.Internal.Show.Show Data.LineString.SequenceToLineStringError
+ Data.LineString: instance GHC.Internal.Show.Show a => GHC.Internal.Show.Show (Data.LineString.LineString a)
+ Data.LinearRing: instance (GHC.Classes.Eq a, Data.Aeson.Types.FromJSON.FromJSON a, GHC.Internal.Show.Show a) => Data.Aeson.Types.FromJSON.FromJSON (Data.LinearRing.LinearRing a)
+ Data.LinearRing: instance GHC.Internal.Base.Functor Data.LinearRing.LinearRing
+ Data.LinearRing: instance GHC.Internal.Data.Foldable.Foldable Data.LinearRing.LinearRing
+ Data.LinearRing: instance GHC.Internal.Data.Traversable.Traversable Data.LinearRing.LinearRing
+ Data.LinearRing: instance GHC.Internal.Generics.Generic (Data.LinearRing.LinearRing a)
+ Data.LinearRing: instance GHC.Internal.Show.Show a => GHC.Internal.Show.Show (Data.LinearRing.LinearRing a)
+ Data.LinearRing: instance GHC.Internal.Show.Show a => GHC.Internal.Show.Show (Data.LinearRing.ListToLinearRingError a)
+ Data.LinearRing: instance GHC.Internal.Show.Show a => GHC.Internal.Show.Show (Data.LinearRing.SequenceToLinearRingError a)
- Data.Geospatial: bbox :: forall a_a1ct9. Lens' (GeoFeature a_a1ct9) (Maybe BoundingBoxWithoutCRS)
+ Data.Geospatial: bbox :: forall a f. Functor f => (Maybe BoundingBoxWithoutCRS -> f (Maybe BoundingBoxWithoutCRS)) -> GeoFeature a -> f (GeoFeature a)
- Data.Geospatial: boundingbox :: forall a_a1i9W. Lens' (GeoFeatureCollection a_a1i9W) (Maybe BoundingBoxWithoutCRS)
+ Data.Geospatial: boundingbox :: forall a f. Functor f => (Maybe BoundingBoxWithoutCRS -> f (Maybe BoundingBoxWithoutCRS)) -> GeoFeatureCollection a -> f (GeoFeatureCollection a)
- Data.Geospatial: class HasGeoPositionWithoutCRS c_agsT
+ Data.Geospatial: class HasGeoPositionWithoutCRS c
- Data.Geospatial: featureId :: forall a_a1ct9. Lens' (GeoFeature a_a1ct9) (Maybe FeatureID)
+ Data.Geospatial: featureId :: forall a f. Functor f => (Maybe FeatureID -> f (Maybe FeatureID)) -> GeoFeature a -> f (GeoFeature a)
- Data.Geospatial: geoPositionWithoutCRS :: HasGeoPositionWithoutCRS c_agsT => Lens' c_agsT GeoPositionWithoutCRS
+ Data.Geospatial: geoPositionWithoutCRS :: HasGeoPositionWithoutCRS c => Lens' c GeoPositionWithoutCRS
- Data.Geospatial: geofeatures :: forall a_a1i9W a_a1icv. Lens (GeoFeatureCollection a_a1i9W) (GeoFeatureCollection a_a1icv) (Seq (GeoFeature a_a1i9W)) (Seq (GeoFeature a_a1icv))
+ Data.Geospatial: geofeatures :: forall a1 a2 f. Functor f => (Seq (GeoFeature a1) -> f (Seq (GeoFeature a2))) -> GeoFeatureCollection a1 -> f (GeoFeatureCollection a2)
- Data.Geospatial: geometry :: forall a_a1ct9. Lens' (GeoFeature a_a1ct9) GeospatialGeometry
+ Data.Geospatial: geometry :: forall a f. Functor f => (GeospatialGeometry -> f GeospatialGeometry) -> GeoFeature a -> f (GeoFeature a)
- Data.Geospatial: properties :: forall a_a1ct9 a_a1cAB. Lens (GeoFeature a_a1ct9) (GeoFeature a_a1cAB) a_a1ct9 a_a1cAB
+ Data.Geospatial: properties :: forall a1 a2 f. Functor f => (a1 -> f a2) -> GeoFeature a1 -> f (GeoFeature a2)
- Data.Geospatial.Internal.BasicTypes: class HasGeoPositionWithoutCRS c_agsT
+ Data.Geospatial.Internal.BasicTypes: class HasGeoPositionWithoutCRS c
- Data.Geospatial.Internal.BasicTypes: geoPositionWithoutCRS :: HasGeoPositionWithoutCRS c_agsT => Lens' c_agsT GeoPositionWithoutCRS
+ Data.Geospatial.Internal.BasicTypes: geoPositionWithoutCRS :: HasGeoPositionWithoutCRS c => Lens' c GeoPositionWithoutCRS
- Data.Geospatial.Internal.GeoFeature: bbox :: forall a_a1ct9. Lens' (GeoFeature a_a1ct9) (Maybe BoundingBoxWithoutCRS)
+ Data.Geospatial.Internal.GeoFeature: bbox :: forall a f. Functor f => (Maybe BoundingBoxWithoutCRS -> f (Maybe BoundingBoxWithoutCRS)) -> GeoFeature a -> f (GeoFeature a)
- Data.Geospatial.Internal.GeoFeature: featureId :: forall a_a1ct9. Lens' (GeoFeature a_a1ct9) (Maybe FeatureID)
+ Data.Geospatial.Internal.GeoFeature: featureId :: forall a f. Functor f => (Maybe FeatureID -> f (Maybe FeatureID)) -> GeoFeature a -> f (GeoFeature a)
- Data.Geospatial.Internal.GeoFeature: geometry :: forall a_a1ct9. Lens' (GeoFeature a_a1ct9) GeospatialGeometry
+ Data.Geospatial.Internal.GeoFeature: geometry :: forall a f. Functor f => (GeospatialGeometry -> f GeospatialGeometry) -> GeoFeature a -> f (GeoFeature a)
- Data.Geospatial.Internal.GeoFeature: properties :: forall a_a1ct9 a_a1cAB. Lens (GeoFeature a_a1ct9) (GeoFeature a_a1cAB) a_a1ct9 a_a1cAB
+ Data.Geospatial.Internal.GeoFeature: properties :: forall a1 a2 f. Functor f => (a1 -> f a2) -> GeoFeature a1 -> f (GeoFeature a2)
- Data.Geospatial.Internal.GeoFeatureCollection: boundingbox :: forall a_a1i9W. Lens' (GeoFeatureCollection a_a1i9W) (Maybe BoundingBoxWithoutCRS)
+ Data.Geospatial.Internal.GeoFeatureCollection: boundingbox :: forall a f. Functor f => (Maybe BoundingBoxWithoutCRS -> f (Maybe BoundingBoxWithoutCRS)) -> GeoFeatureCollection a -> f (GeoFeatureCollection a)
- Data.Geospatial.Internal.GeoFeatureCollection: geofeatures :: forall a_a1i9W a_a1icv. Lens (GeoFeatureCollection a_a1i9W) (GeoFeatureCollection a_a1icv) (Seq (GeoFeature a_a1i9W)) (Seq (GeoFeature a_a1icv))
+ Data.Geospatial.Internal.GeoFeatureCollection: geofeatures :: forall a1 a2 f. Functor f => (Seq (GeoFeature a1) -> f (Seq (GeoFeature a2))) -> GeoFeatureCollection a1 -> f (GeoFeatureCollection a2)
Files
- geojson.cabal +12/−12
- src/Data/LineString.hs +4/−0
- src/Data/LinearRing.hs +4/−0
- src/Data/SeqHelper.hs +1/−1
geojson.cabal view
@@ -1,10 +1,10 @@ name: geojson-version: 4.1.1+version: 4.1.2 license: BSD3 license-file: LICENCE author: Dom De Re maintainer: Andrew Newman-copyright: Copyright (C) 2013-2023+copyright: Copyright (C) 2013-2025 synopsis: A thin GeoJSON Layer above the aeson library category: Data description: A thin GeoJSON Layer above the aeson library.@@ -27,17 +27,17 @@ source-repository this type: git location: https://github.com/zellige/hs-geojson.git- tag: 4.1.1+ tag: 4.1.2 library hs-source-dirs: src build-depends: base >= 4.9 && < 5 , aeson >= 2.0.1.0 && < 3- , containers >= 0.5.7.1 && < 0.7- , deepseq >= 1.4.2.0 && < 1.5+ , containers >= 0.5.7.1 && < 0.9+ , deepseq >= 1.4.2.0 && < 1.6 , lens >= 4.11 , semigroups >= 0.16- , text >= 1.2.3.0 && < 2.1+ , text >= 1.2.3.0 && < 2.2 , scientific >= 0.2.0 && < 0.4 , transformers >= 0.3 && < 0.7 , validation >= 1 && < 2.0@@ -68,14 +68,14 @@ type: exitcode-stdio-1.0 build-depends: base >= 4.9 && < 5 , aeson >= 2.0.1.0 && < 3- , bytestring >= 0.10.8.1 && < 0.12- , containers >= 0.5.7.1 && < 0.7+ , bytestring >= 0.10.8.1 && < 0.13+ , containers >= 0.5.7.1 && < 0.8 , geojson- , hspec >= 2.5 && < 2.10- , tasty >= 0.8 && <0.13 || >=1.0 && <1.5+ , hspec >= 2.5 && < 2.12+ , tasty >= 0.8 && <0.13 || >=1.0 && <1.6 , tasty-hspec >= 1.2 && < 1.3- , tasty-quickcheck >= 0.3 && <0.9 || >=0.9.1 && <0.11- , text >= 1.2.3.0 && < 2.1+ , tasty-quickcheck >= 0.3 && <0.9 || >=0.9.1 && <0.12+ , text >= 1.2.3.0 && < 2.2 , validation >= 1 && < 2.0 other-modules: Arbitrary , Fixture
src/Data/LineString.hs view
@@ -172,6 +172,10 @@ -- foldr :: (a -> b -> b) -> b -> LineString a -> b foldr f u (LineString x y zs) = f x (f y (Foldable.foldr f u zs)) + -- we implement these methods for improved performance+ null _ = False+ length (LineString _ _ zs) = 2 + Sequence.length zs+ instance Traversable LineString where -- sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a) sequenceA (LineString fx fy fzs) = LineString <$> fx <*> fy <*> sequenceA fzs
src/Data/LinearRing.hs view
@@ -200,6 +200,10 @@ -- foldr :: (a -> b -> b) -> b -> LinearRing a -> b foldr f u (LinearRing x y z ws) = f x (f y (f z (Foldable.foldr f (f x u) ws))) + -- we implement these methods for improved performance+ null _ = False+ length (LinearRing _ _ _ ws) = 4 + Sequence.length ws+ -- | -- When traversing this Structure, the Applicative context -- of the last element will be appended to the end to close the loop
src/Data/SeqHelper.hs view
@@ -26,7 +26,7 @@ sequenceTail _ = Sequence.empty {-# INLINE sequenceTail #-} -removeNextDuplicate :: Eq a => Sequence.Seq a -> Sequence.Seq a+removeNextDuplicate :: (Eq a) => Sequence.Seq a -> Sequence.Seq a removeNextDuplicate Sequence.Empty = Sequence.empty removeNextDuplicate xs@(_ Sequence.:<| Sequence.Empty) = xs removeNextDuplicate (x Sequence.:<| tailXs@(y Sequence.:<| _))