Skip to content

Commit f432e7d

Browse files
committed
Merge branch 'develop' into patchable
2 parents beb1780 + e263a95 commit f432e7d

File tree

13 files changed

+134
-43
lines changed

13 files changed

+134
-43
lines changed

ChangeLog.md

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,40 @@
11
# Revision history for patch
22

3-
## Unreleased
3+
## 0.0.5.1 - 2021-12-28
4+
5+
* New dep of `data-orphans` for old GHC to get instances honestly instead of
6+
via `monoidal-containers`.
7+
8+
## 0.0.5.0 - 2021-12-17
9+
10+
* `Additive` now lives in `Data.Semigroup.Additive`, but is still reexported
11+
from `Data.Patch` for compatability.
412

513
* Rewrite `PatchMapWithMove` in terms of `PatchMapWithPatchingMove`.
614
Care is taken to make this not a breaking change.
715
In particular, `PatchMapWithMove` is a newtype of `PatchMapWithPatchingMove`, as is the `NodeInfo` and `From` of `PatchMapWithPatchingMove`'s versions of those.
816
There are complete constructor and field patterns too, and everything is
917
exported under the newtype as real constructors and fields would be.
1018

11-
## 0.0.4.0
19+
## 0.0.4.0 - 2021-04-20
1220

1321
* Enable PolyKinds
1422

15-
## 0.0.3.2
23+
## 0.0.3.2 - 2020-11-06
1624

1725
* Update version bounds
1826

19-
## 0.0.3.1
27+
## 0.0.3.1 - 2020-02-05
2028

2129
* Replace `fromJust` with something easier to debug.
2230

23-
## 0.0.3.0
31+
## 0.0.3.0 - 2020-02-05
2432

2533
* Create `PatchMapWithPatchingMove` variant which supports moves with a patch.
2634

2735
* Create `DecidablyEmpty` subclass of `Monoid`.
2836

29-
## 0.0.2.0
37+
## 0.0.2.0 - 2020-01-17
3038

3139
* Consistently provide:
3240

@@ -38,16 +46,16 @@
3846

3947
for `PatchMap`, `PatchIntMap`, and `PatchMapWithMove`.
4048

41-
## 0.0.1.0
49+
## 0.0.1.0 - 2020-01-09
4250

4351
* Support older GHCs with `split-these` flag.
4452

4553
* Additional instances for the `Group` class for basic types.
4654

47-
## 0.0.0.1
55+
## 0.0.0.1 - 2020-01-08
4856

4957
* Remove unneeded dependencies
5058

51-
## 0.0.0.0
59+
## 0.0.0.0 - 2020-01-08
5260

5361
* Extract patching functionality from Reflex.

patch.cabal

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Name: patch
2-
Version: 0.0.4.0
2+
Version: 0.0.5.1
33
Synopsis: Data structures for describing changes to other data structures.
44
Description:
55
Data structures for describing changes to other data structures.
@@ -43,6 +43,9 @@ library
4343
, transformers >= 0.5.6.0 && < 0.6
4444
, witherable >= 0.3 && < 0.5
4545

46+
if impl(ghc < 8.6) -- really, if base < 8.12
47+
build-depends: base-orphans >= 0.8 && < 0.9
48+
4649
exposed-modules: Data.Functor.Misc
4750
, Data.Monoid.DecidablyEmpty
4851
, Data.Patch
@@ -54,6 +57,7 @@ library
5457
, Data.Patch.MapWithMove
5558
, Data.Patch.MapWithPatchingMove
5659
, Data.Patch.Patchable
60+
, Data.Semigroup.Additive
5761

5862
ghc-options: -Wall -fwarn-redundant-constraints -fwarn-tabs
5963
default-extensions: PolyKinds

src/Data/Functor/Misc.hs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@
1010
{-# LANGUAGE RankNTypes #-}
1111
{-# LANGUAGE ScopedTypeVariables #-}
1212
{-# LANGUAGE StandaloneDeriving #-}
13-
-- | This module provides types and functions with no particular theme, but
14-
-- which are relevant to the use of 'Functor'-based datastructures like
15-
-- 'Data.Dependent.Map.DMap'.
13+
14+
{- |
15+
Description: Misc utilities relating to functor.
16+
17+
This module provides types and functions with no particular theme, but which
18+
are relevant to the use of 'Functor'-based datastructures like
19+
'Data.Dependent.Map.DMap'.
20+
-}
1621
module Data.Functor.Misc
1722
( -- * Const2
1823
Const2 (..)

src/Data/Monoid/DecidablyEmpty.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
{-# LANGUAGE TypeOperators #-}
66

77
-- TODO upstream somwhere else?
8+
{-|
9+
Description: This module provides a class to decide whether a monoid element is the identity.
10+
-}
811
module Data.Monoid.DecidablyEmpty where
912

1013
import Data.Functor.Identity

src/Data/Patch.hs

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
{-# LANGUAGE StandaloneDeriving #-}
44
{-# LANGUAGE TypeFamilies #-}
55
{-# LANGUAGE TypeOperators #-}
6-
-- |
7-
-- Module:
8-
-- Data.Patch
9-
-- Description:
10-
-- This module defines the 'Patch' class.
6+
7+
{-|
8+
Description:
9+
This module defines the 'Group' class, and reexports the other modules.
10+
-}
1111
module Data.Patch
1212
( module Data.Patch
1313
, module X
@@ -23,6 +23,7 @@ import Data.Semigroup (Semigroup (..))
2323
#endif
2424
import GHC.Generics
2525

26+
import Data.Semigroup.Additive as X
2627
import Data.Patch.Class as X
2728
import Data.Patch.DMap as X hiding (getDeletions)
2829
import Data.Patch.DMapWithMove as X
@@ -45,9 +46,6 @@ class (Semigroup q, Monoid q) => Group q where
4546
(~~) :: q -> q -> q
4647
r ~~ s = r <> negateG s
4748

48-
-- | An 'Additive' 'Semigroup' is one where (<>) is commutative
49-
class Semigroup q => Additive q where
50-
5149
-- | The elements of an 'Additive' 'Semigroup' can be considered as patches of their own type.
5250
newtype AdditivePatch p = AdditivePatch { unAdditivePatch :: p }
5351

@@ -58,49 +56,40 @@ instance Additive p => Patch (AdditivePatch p) where
5856
instance (Ord k, Group q) => Group (MonoidalMap k q) where
5957
negateG = fmap negateG
6058

61-
instance (Ord k, Additive q) => Additive (MonoidalMap k q)
62-
6359
-- | Trivial group.
6460
instance Group () where
6561
negateG _ = ()
6662
_ ~~ _ = ()
67-
instance Additive ()
6863

6964
-- | Product group. A Pair of groups gives rise to a group
7065
instance (Group a, Group b) => Group (a, b) where
7166
negateG (a, b) = (negateG a, negateG b)
7267
(a, b) ~~ (c, d) = (a ~~ c, b ~~ d)
73-
instance (Additive a, Additive b) => Additive (a, b)
7468

7569
-- See https://gitlab.haskell.org/ghc/ghc/issues/11135#note_111802 for the reason Compose is not also provided.
7670
-- Base does not define Monoid (Compose f g a) so this is the best we can
7771
-- really do for functor composition.
7872
instance Group (f (g a)) => Group ((f :.: g) a) where
7973
negateG (Comp1 xs) = Comp1 (negateG xs)
8074
Comp1 xs ~~ Comp1 ys = Comp1 (xs ~~ ys)
81-
instance Additive (f (g a)) => Additive ((f :.: g) a)
8275

8376
-- | Product of groups, Functor style.
8477
instance (Group (f a), Group (g a)) => Group ((f :*: g) a) where
8578
negateG (a :*: b) = negateG a :*: negateG b
8679
(a :*: b) ~~ (c :*: d) = (a ~~ c) :*: (b ~~ d)
87-
instance (Additive (f a), Additive (g a)) => Additive ((f :*: g) a)
8880

8981
-- | Trivial group, Functor style
9082
instance Group (Proxy x) where
9183
negateG _ = Proxy
9284
_ ~~ _ = Proxy
93-
instance Additive (Proxy x)
9485

9586
-- | Const lifts groups into a functor.
9687
deriving instance Group a => Group (Const a x)
97-
instance Additive a => Additive (Const a x)
88+
9889
-- | Identity lifts groups pointwise (at only one point)
9990
deriving instance Group a => Group (Identity a)
100-
instance Additive a => Additive (Identity a)
10191

10292
-- | Functions lift groups pointwise.
10393
instance Group b => Group (a -> b) where
10494
negateG f = negateG . f
10595
(~~) = liftA2 (~~)
106-
instance Additive b => Additive (a -> b)

src/Data/Patch/Class.hs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
{-# LANGUAGE CPP #-}
22
{-# LANGUAGE ScopedTypeVariables #-}
33
{-# LANGUAGE TypeFamilies #-}
4-
-- | The interface for types which represent changes made to other types
4+
5+
{-|
6+
Description: The module provides the 'Patch' class.
7+
8+
This is a class for types which represent changes made to other types
9+
-}
510
module Data.Patch.Class where
611

712
import Data.Functor.Identity

src/Data/Patch/DMap.hs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@
77
{-# LANGUAGE StandaloneDeriving #-}
88
{-# LANGUAGE TypeFamilies #-}
99

10-
-- | 'Patch'es on 'DMap' that consist only of insertions (or overwrites) and deletions.
10+
{-|
11+
Description: A basic 'Patch' on 'DMap'
12+
13+
Patches of this type consist only of insertions (including overwrites) and
14+
deletions.
15+
-}
1116
module Data.Patch.DMap where
1217

1318
import Data.Patch.Class

src/Data/Patch/DMapWithMove.hs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@
1111
{-# LANGUAGE TypeFamilies #-}
1212
{-# LANGUAGE UndecidableInstances #-}
1313

14-
-- |Module containing @'PatchDMapWithMove' k v@ and associated functions, which represents a 'Patch' to a @'DMap' k v@ which can insert, update, delete, and
15-
-- move values between keys.
14+
{-|
15+
Description: A more advanced 'Patch' for 'DMap'.
16+
17+
This Module contains @'PatchDMapWithMove' k v@ and associated functions, which
18+
represents a 'Patch' to a @'DMap' k v@ which can insert, update, delete, and
19+
move values between keys.
20+
-}
1621
module Data.Patch.DMapWithMove where
1722

1823
import Data.Patch.Class

src/Data/Patch/IntMap.hs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@
77
{-# LANGUAGE TemplateHaskell #-}
88
{-# LANGUAGE TypeFamilies #-}
99

10-
-- | Module containing 'PatchIntMap', a 'Patch' for 'IntMap' which allows for
11-
-- insert/update or delete of associations.
10+
{-|
11+
Description: Module containing 'PatchIntMap', a 'Patch' for 'IntMap'.
12+
13+
Patches of this sort allow for insert/update or delete of associations.
14+
-}
1215
module Data.Patch.IntMap where
1316

1417
import Control.Lens

src/Data/Patch/Map.hs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@
88
{-# LANGUAGE TemplateHaskell #-}
99
{-# LANGUAGE TypeFamilies #-}
1010

11-
-- | 'Patch'es on 'Map' that consist only of insertions (including overwrites)
12-
-- and deletions
11+
{-|
12+
Description: A basic 'Patch' on 'Map'
13+
14+
Patches of this type consist only of insertions (including overwrites) and
15+
deletions.
16+
-}
1317
module Data.Patch.Map where
1418

1519
import Data.Patch.Class

0 commit comments

Comments
 (0)