packages feed

Cabal revisions of type-level-sets-0.8.0.0

Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.

revision 1
-name:                   type-level-sets-version:                0.8.0.0-synopsis:               Type-level sets and finite maps (with value-level counterparts)-description:            This package provides type-level sets (no duplicates, sorted to provide a normal form) via 'Set' and type-level finite maps via 'Map', with value-level counterparts.-                        .-                        Described in the paper "Embedding effect systems in Haskell" by Dominic Orchard and Tomas Petricek <http://www.cl.cam.ac.uk/~dao29/publ/haskell14-effects.pdf> (Haskell Symposium, 2014). This version now uses Quicksort to normalise the representation.-                        .-                        Here is a brief example for finite maps: -                        .-                        @-                         import Data.Type.Map-                         .-                         -- Specify how to combine duplicate key-value pairs for Int values-                         type instance Combine Int Int = Int-                         instance Combinable Int Int where-                             combine x y = x + y-                         .-                         foo :: Map '["x" :-> Int, "z" :-> Bool, "w" :-> Int]-                         foo = Ext (Var :: (Var "x")) 2 -                             $ Ext (Var :: (Var "z")) True -                             $ Ext (Var :: (Var "w")) 5 -                             $ Empty -                         .-                         bar :: Map '["y" :-> Int, "w" :-> Int]-                         bar = Ext (Var :: (Var "y")) 3-                             $ Ext (Var :: (Var "w")) 1-                             $ Empty-                         .  -                         -- foobar :: Map '["w" :-> Int, "x" :-> Int, "y" :-> Int, "z" :-> Bool]-                         foobar = foo `union` bar-                         .-                        @-                        .-                        The 'Map' type for 'foobar' here shows the normalised form (sorted with no duplicates). The type signatures is commented out as it can be infered. Running the example we get:-                        .-                        @-                         > >>> foobar	-                         > {w :-> 6, x :-> 2, y :-> 3, z :-> True}-                        @-                        .-                        Thus, we see that the values for \"w\" are added together.-                        .-                        For sets, here is an example:-                        .-                        @-                         import GHC.TypeLits-                         import Data.Type.Set-                         type instance Cmp (Natural n) (Natural m) = CmpNat n m-                         .-                         data Natural (a :: Nat) where-                             Z :: Natural 0-                             S :: Natural n -> Natural (n + 1)-                         .-                         -- foo :: Set '[Natural 0, Natural 1, Natural 3]-                         foo = asSet $ Ext (S Z) (Ext (S (S (S Z))) (Ext Z Empty))-                         .-                         -- bar :: Set '[Natural 1, Natural 2]-                         bar = asSet $ Ext (S (S Z)) (Ext (S Z) (Ext (S Z) Empty))-                         .-                         -- foobar :: Set '[Natural 0, Natural 1, Natural 2, Natural 3]-                         foobar = foo `union` bar-                         .-                       @-                       Note the types here are all inferred.-license:                BSD3-license-file:           LICENSE-category:               Type System, Data Structures-copyright:              2013-16 University of Cambridge-author:                 Dominic Orchard-maintainer:             Dominic Orchard-stability:              experimental-build-type:             Simple-cabal-version:          >= 1.6-tested-with:            GHC >= 8.0.1--extra-source-files:     example.hs, example2.hs---source-repository head-  type: git-  location: https://github.com/dorchard/type-level-sets--library-  hs-source-dirs:       src---  exposed-modules:      Data.Type.Set-                        Data.Type.Map-                        -  build-depends:        base < 5,-                        ghc-prim+name:                   type-level-sets
+version:                0.8.0.0
+x-revision: 1
+synopsis:               Type-level sets and finite maps (with value-level counterparts)
+description:            This package provides type-level sets (no duplicates, sorted to provide a normal form) via 'Set' and type-level finite maps via 'Map', with value-level counterparts.
+                        .
+                        Described in the paper "Embedding effect systems in Haskell" by Dominic Orchard and Tomas Petricek <http://www.cl.cam.ac.uk/~dao29/publ/haskell14-effects.pdf> (Haskell Symposium, 2014). This version now uses Quicksort to normalise the representation.
+                        .
+                        Here is a brief example for finite maps: 
+                        .
+                        @
+                         import Data.Type.Map
+                         .
+                         -- Specify how to combine duplicate key-value pairs for Int values
+                         type instance Combine Int Int = Int
+                         instance Combinable Int Int where
+                             combine x y = x + y
+                         .
+                         foo :: Map '["x" :-> Int, "z" :-> Bool, "w" :-> Int]
+                         foo = Ext (Var :: (Var "x")) 2 
+                             $ Ext (Var :: (Var "z")) True 
+                             $ Ext (Var :: (Var "w")) 5 
+                             $ Empty 
+                         .
+                         bar :: Map '["y" :-> Int, "w" :-> Int]
+                         bar = Ext (Var :: (Var "y")) 3
+                             $ Ext (Var :: (Var "w")) 1
+                             $ Empty
+                         .  
+                         -- foobar :: Map '["w" :-> Int, "x" :-> Int, "y" :-> Int, "z" :-> Bool]
+                         foobar = foo `union` bar
+                         .
+                        @
+                        .
+                        The 'Map' type for 'foobar' here shows the normalised form (sorted with no duplicates). The type signatures is commented out as it can be infered. Running the example we get:
+                        .
+                        @
+                         > >>> foobar	
+                         > {w :-> 6, x :-> 2, y :-> 3, z :-> True}
+                        @
+                        .
+                        Thus, we see that the values for \"w\" are added together.
+                        .
+                        For sets, here is an example:
+                        .
+                        @
+                         import GHC.TypeLits
+                         import Data.Type.Set
+                         type instance Cmp (Natural n) (Natural m) = CmpNat n m
+                         .
+                         data Natural (a :: Nat) where
+                             Z :: Natural 0
+                             S :: Natural n -> Natural (n + 1)
+                         .
+                         -- foo :: Set '[Natural 0, Natural 1, Natural 3]
+                         foo = asSet $ Ext (S Z) (Ext (S (S (S Z))) (Ext Z Empty))
+                         .
+                         -- bar :: Set '[Natural 1, Natural 2]
+                         bar = asSet $ Ext (S (S Z)) (Ext (S Z) (Ext (S Z) Empty))
+                         .
+                         -- foobar :: Set '[Natural 0, Natural 1, Natural 2, Natural 3]
+                         foobar = foo `union` bar
+                         .
+                       @
+                       Note the types here are all inferred.
+license:                BSD3
+license-file:           LICENSE
+category:               Type System, Data Structures
+copyright:              2013-16 University of Cambridge
+author:                 Dominic Orchard
+maintainer:             Dominic Orchard
+stability:              experimental
+build-type:             Simple
+cabal-version:          >= 1.6
+tested-with:            GHC >= 8.0.1
+
+extra-source-files:     example.hs, example2.hs
+
+
+source-repository head
+  type: git
+  location: https://github.com/dorchard/type-level-sets
+
+library
+  hs-source-dirs:       src
+
+
+  exposed-modules:      Data.Type.Set
+                        Data.Type.Map
+                        
+  build-depends:        base >= 4.7 && < 5,
+                        ghc-prim