packages feed

total-map 0.1.0 → 0.1.3

raw patch · 2 files changed

+32/−11 lines, 2 filesdep ~semiring-num

Dependency ranges changed: semiring-num

Files

src/Data/TotalMap.hs view
@@ -3,7 +3,7 @@ ---------------------------------------------------------------------- -- | -- Module      :  Data.TotalMap--- Copyright   :  (c) Conal Elliott 2012+-- Copyright   :  (c) Conal Elliott 2012--2019 -- License     :  BSD3 --  -- Maintainer  :  conal@conal.net@@ -14,8 +14,11 @@ ----------------------------------------------------------------------  module Data.TotalMap-  ( TMap,fromPartial,(!),tabulate,trim-  , intersectionPartialWith,codomain+  ( TMap,fromPartial+  , empty, insert, singleton+  , (!),tabulate,trim+  , intersectionPartialWith,range+  , mapKeysWith   -- , tmapRepr   ) where @@ -40,9 +43,21 @@ -- The representation is a default value and a finite map for the rest.  -- | Create a total map from a default value and a partial map.-fromPartial :: a -> Map k a -> TMap k a+fromPartial :: v -> Map k v -> TMap k v fromPartial = TMap +-- | A total map only default+empty :: v -> TMap k v+empty v = TMap v M.empty++-- | Insert a key\/value pair+insert :: Ord k => k -> v -> TMap k v -> TMap k v+insert k v (TMap d m) = TMap d (M.insert k v m)++-- | Singleton plus default+singleton :: Ord k => k -> v -> v -> TMap k v+singleton k v d = insert k v (empty d)+ infixl 9 ! -- | Sample a total map. Semantic function. (!) :: Ord k => TMap k v -> k -> v@@ -73,9 +88,10 @@    `M.union`    fmap (f ad) bm +{-# DEPRECATED range "Non-denotative" #-} -- | Witness the finiteness of the support concretely by giving its image.-codomain :: Ord v => TMap k v -> Set v-codomain (TMap dflt m) = S.fromList (dflt : M.elems m)+range :: Ord v => TMap k v -> Set v+range (TMap dflt m) = S.fromList (dflt : M.elems m)  {--------------------------------------------------------------------     Instances@@ -180,6 +196,12 @@ {--------------------------------------------------------------------     Misc --------------------------------------------------------------------}++mapKeysWith :: (Semiring z, Ord b) => (z -> z -> z) -> (a -> b) -> TMap a z -> TMap b z+mapKeysWith comb f (TMap d m) = TMap d (M.mapKeysWith comb f m)++-- liftA2Keys :: Ord b => (a -> b -> c) -> TMap a z -> TMap b z -> TMap c z+-- liftA2Keys f (TMap c m) (TMap d n) = ... -- ??  idMap :: Eq k => Set k -> Map k k idMap = M.fromAscList . map (\ k -> (k,k)) . S.toAscList
total-map.cabal view
@@ -1,14 +1,14 @@ Name:                total-map-Version:             0.1.0+Version:             0.1.3 Cabal-Version:       >= 1.10-Synopsis:            Finitely represented /total/ maps+Synopsis:            Finitely represented total maps Category:            Data Description:   Finitely represented /total/ maps. Represented by as a partial map and   a default value. Has Applicative and Monad instances (unlike Data.Map). Author:              Conal Elliott Maintainer:          conal@conal.net-Copyright:           (c) 2012 by Conal Elliott+Copyright:           (c) 2012--2019 by Conal Elliott License:             BSD3 License-File:        COPYING Stability:           experimental@@ -24,8 +24,7 @@ Library   hs-Source-Dirs:      src   Extensions:-  Build-Depends:       base<5, containers, semiring-num-                       -- , comonad+  Build-Depends:       base<5, containers, semiring-num>=1.6.0.4   Exposed-Modules:                             Data.TotalMap   default-language: Haskell2010