packages feed

LTree 0.0 → 0.1

raw patch · 2 files changed

+37/−2 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Control.Trees.LTreeT: TreeT :: (m (Tree a)) -> TreeT m a
+ Control.Trees.LTreeT: data TreeT m a
+ Control.Trees.LTreeT: instance Applicative m => Applicative (TreeT m)
+ Control.Trees.LTreeT: instance Functor m => Functor (TreeT m)
+ Control.Trees.LTreeT: instance Monad m => Monad (TreeT m)
+ Control.Trees.LTreeT: instance MonadIO m => MonadIO (TreeT m)
+ Control.Trees.LTreeT: instance MonadTrans TreeT

Files

+ Control/Trees/LTreeT.hs view
@@ -0,0 +1,35 @@+module Control.Trees.LTreeT(TreeT(..)) where++import Control.Monad.Trans.Class+import Control.Monad.IO.Class+import Control.Monad+import Control.Applicative++import Data.Trees.LTree+data TreeT m a = TreeT (m (Tree a))+runTreeT (TreeT m) = m+treeT0 = TreeT+treeT1 f = treeT0 . f . runTreeT+treeT2 f = treeT1 . f . runTreeT++instance Monad m => Monad (TreeT m) where+    return c =  TreeT $ return $ Leaf c+    tmb_v >>= f = TreeT $ runTreeT tmb_v >>= onone f+               where onone f (Node b_ets) = do+                       ets_ <- mapM (onone f) b_ets+                       return $ Node ets_+                     onone f (Leaf x) = runTreeT $ f x++instance MonadTrans TreeT where+   lift x = TreeT $ x >>= return . Leaf++instance Functor m => Functor (TreeT m) where+   fmap = treeT1 . fmap . fmap++instance Applicative m => Applicative (TreeT m)where+   pure = treeT0 . pure . pure+   (<*>) = treeT2 . liftA2 . liftA2 $ id++instance MonadIO m => MonadIO (TreeT m) where+   liftIO = lift . liftIO+        
LTree.cabal view
@@ -1,5 +1,5 @@ Name:          LTree-Version:       0.0+Version:       0.1 Cabal-Version: >=1.6 Synopsis:   Tree with only leaves carrying the data. Description:@@ -19,7 +19,7 @@  Library   Build-Depends:    base >= 2 && < 5, transformers-  Exposed-Modules:  Data.Trees.LTree+  Exposed-Modules:  Data.Trees.LTree, Control.Trees.LTreeT  Source-Repository head   type:     darcs