cursor 0.3.1.0 → 0.3.2.0
raw patch · 3 files changed
+31/−5 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Cursor.Tree.Types: instance Data.Foldable.Foldable Cursor.Tree.Types.CForest
+ Cursor.Tree.Types: instance Data.Foldable.Foldable Cursor.Tree.Types.CTree
+ Cursor.Tree.Types: instance Data.Traversable.Traversable Cursor.Tree.Types.CForest
+ Cursor.Tree.Types: instance Data.Traversable.Traversable Cursor.Tree.Types.CTree
Files
- CHANGELOG.md +9/−2
- cursor.cabal +3/−3
- src/Cursor/Tree/Types.hs +19/−0
CHANGELOG.md view
@@ -1,5 +1,12 @@ # Changelog +## [0.3.2.0] - 2021-12-03++### Added++* `Foldable` and `Traversable` instance for `CTree`+* `Foldable` and `Traversable` instance for `CForest`+ ## [0.3.1.0] - 2021-11-23 ### Added@@ -11,9 +18,9 @@ ## [0.3.0.0] - 2020-02-14 -### Changed+### Added -- NFData instances for benchmarks+- `NFData` instances for benchmarks ## [0.2.0.0] - 2019-09-23
cursor.cabal view
@@ -1,13 +1,13 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.34.4.+-- This file has been generated from package.yaml by hpack version 0.34.5. -- -- see: https://github.com/sol/hpack ----- hash: 295467a341ff6e00d4d214636b3656ec0c9a1e9edbd8a56c8801ff54b64d7445+-- hash: 6fe2aa234542609cd72561ea24a95b4c776348d851658752b61fdff8c0c80542 name: cursor-version: 0.3.1.0+version: 0.3.2.0 synopsis: Purely Functional Cursors description: Purely Functional Cursors for common data structures .
src/Cursor/Tree/Types.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE LambdaCase #-} {-# LANGUAGE TypeFamilies #-} module Cursor.Tree.Types@@ -106,6 +107,12 @@ instance NFData a => NFData (CTree a) +instance Foldable CTree where+ foldMap f (CNode a cf) = f a `mappend` foldMap f cf++instance Traversable CTree where+ traverse f (CNode a cf) = CNode <$> f a <*> traverse f cf+ makeCTree :: Tree a -> CTree a makeCTree = cTree False @@ -124,6 +131,18 @@ instance Validity a => Validity (CForest a) instance NFData a => NFData (CForest a)++instance Foldable CForest where+ foldMap f = \case+ EmptyCForest -> mempty+ ClosedForest ne -> foldMap (foldMap f) ne+ OpenForest ne -> foldMap (foldMap f) ne++instance Traversable CForest where+ traverse f = \case+ EmptyCForest -> pure EmptyCForest+ ClosedForest ne -> ClosedForest <$> traverse (traverse f) ne+ OpenForest ne -> OpenForest <$> traverse (traverse f) ne makeCForest :: Forest a -> CForest a makeCForest = cForest True