multiplate 0.0.1 → 0.0.1.1
raw patch · 3 files changed
+30/−2 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG +3/−0
- Data/Generics/Multiplate.hs +26/−1
- multiplate.cabal +1/−1
CHANGELOG view
@@ -1,2 +1,5 @@ New in version 0.0.1: - eta expanding definition of traverseMFor for GHC 7 compatibility++New in version 0.0.1.1:+ - documenation of the Multiplate laws
Data/Generics/Multiplate.hs view
@@ -28,7 +28,11 @@ -- } -- @ -- --- The names of the modules are based on Sebastian Fischer's Refactoring Uniplate: +-- Although this above is the original motivation behind multiplate,but you can make+-- any structure you want into a 'Multiplate' as long as you satisfy the two multiplate laws listed+-- below.+-- +-- The names of the functions in this module are based on Sebastian Fischer's Refactoring Uniplate: -- <http://www-ps.informatik.uni-kiel.de/~sebf/projects/traversal.html> module Data.Generics.Multiplate where @@ -45,6 +49,27 @@ -- 'Projector' is the type of the projection functions of plates. type Projector p a = forall f. p f -> a -> f a +-- | A 'Multiplate' is a constructor of kind @(* -> *) -> *@ operating on 'Applicative' functors+-- having functions 'multiplate' and 'mkPlate' that satisfy the following two laws:+-- +-- (1) @+-- 'multiplate' 'purePlate' = 'purePlate'+-- where+-- 'purePlate' = 'mkPlate' (\\_ -> 'pure')+-- @+-- +-- (2) @+-- 'multiplate' ('composePlate' p1 p2) = 'composePlate' ('multiplate' p1) ('multiplate' p2)+-- where+-- 'composePlate' p1 p2 = 'mkPlate' (\\proj a -> ('Compose' (proj p1 ``fmap`` proj p2 a)))+-- @+--+-- Note: By parametricity, it suffices for (1) to prove +-- +-- @+-- 'multiplate' ('mkPlate' (\\_ -> 'Identity')) = ('mkPlate' (\\_ -> 'Identity'))+-- @+-- class Multiplate p where -- | This is the heart of the Multiplate library. Given a plate of functions over some -- applicative functor @f@, create a new plate that applies these functions to the children
multiplate.cabal view
@@ -1,5 +1,5 @@ Name: multiplate-Version: 0.0.1+Version: 0.0.1.1 Cabal-Version: >= 1.4 License: MIT License-File: LICENSE