packages feed

discrete-space-map 0.0.2 → 0.0.3

raw patch · 3 files changed

+15/−5 lines, 3 files

Files

Data/DiscreteSpaceMap.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, MultiParamTypeClasses, FlexibleInstances #-}+{-# LANGUAGE TypeFamilies, MultiParamTypeClasses, ViewPatterns, FlexibleInstances #-} module Data.DiscreteSpaceMap (Pos(..), Map(..), modify) where  import Control.Comonad@@ -65,10 +65,14 @@   lookup = lookupDefault instance Pos p => Adjustable (Map p) where   adjust f p z = seek (pos z) . modify f . seek p $ z++-- | @ `distribute` :: Functor f => f (Map p a) -> Map p (f a)@ instance Pos p => Distributive (Map p) where-  distribute = distributeRep--- | @ `index` :: Pos p => Map p a -> p -> a@--- | @ `tabulate` :: Pos p => (p -> a) -> Map p a@+  distribute (fmap (seek zero) -> m) = Map zero (fmap extract m) (cotraverseD id $ (\(Map _ _ c) -> c) <$> m)++-- | @+-- `index` :: Pos p => Map p a -> p -> a+-- `tabulate` :: Pos p => (p -> a) -> Map p a@ instance Pos p => Representable (Map p) where   type Rep (Map p) = p   tabulate f = Map zero (f zero) (tabulateD f)
Data/DiscreteSpaceMap/Internal.hs view
@@ -69,6 +69,12 @@ tabulateD :: Pos p => (p -> a) -> MapD a tabulateD f = MapD (f (cons (zero, True))) $ tabulateD (\p -> (f (cons (p, False)), f (cons (p, True))))  +cotraverseD :: Functor f => (f a -> b) -> f (MapD a) -> MapD b+cotraverseD f m = MapD (f $ hd <$> m) (cotraverseD (\fa2 -> (f $ fst <$> fa2, f $ snd <$> fa2)) (tl <$> m))+  where+    hd (MapD a _) = a+    tl (MapD _ as) = as+ zipWithKeyD :: Pos p => (p -> a -> b -> c) -> p -> MapD a -> MapD b -> MapD c zipWithKeyD f p (MapD a ca) (MapD b cb) =    MapD (f pOther a b) (zipWithKeyD f' pUp ca cb)
discrete-space-map.cabal view
@@ -1,5 +1,5 @@ name:                discrete-space-map-version:             0.0.2+version:             0.0.3 synopsis:            A discrete space map. description:         A discrete space map implemented as a zipper on an infinite perfect binary tree. homepage:            https://github.com/sjoerdvisscher/discrete-space-map