packages feed

TreeT (empty) → 0.0

raw patch · 4 files changed

+76/−0 lines, 4 filesdep +basedep +containersdep +transformerssetup-changed

Dependencies added: base, containers, transformers

Files

+ Control/TreeT.hs view
@@ -0,0 +1,35 @@+module Control.TreeT (TreeT(..)) where+import Data.Tree+import Data.Monoid++import Control.Monad.Trans.Class+import Control.Monad.IO.Class+import Control.Monad+import Control.Applicative++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 m =  TreeT $ return $ Node m []+   tmb_v >>= f = TreeT $ runTreeT tmb_v >>= onone f+          where onone f (Node b_ex b_ets) = do+                   Node ex ets <- runTreeT (f b_ex)+                   ets_ <- mapM (onone f) b_ets+                   return $ Node ex (ets_ ++ ets)++instance MonadTrans TreeT where+  lift x = treeT0 $ x >>= return . flip Node []++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
+ LICENSE view
@@ -0,0 +1,15 @@+ALL PUBLIC DOMAIN MATERIAL IS OFFERED AS-IS. NO REPRESENTATIONS OR+WARRANTIES OF ANY KIND ARE MADE CONCERNING THE MATERIALS, EXPRESS,+IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION,+WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR+PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,+ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT+DISCOVERABLE.++IN NO EVENT WILL THE AUTHOR(S), PUBLISHER(S), OR PRESENTER(S) OF ANY+PUBLIC DOMAIN MATERIAL BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY+SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES+ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF THE+AUTHOR(S), PUBLISHER(S), OR PRESENTER(S) HAVE BEEN ADVISED OF THE+POSSIBILITY OF SUCH DAMAGES.+
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ TreeT.cabal view
@@ -0,0 +1,24 @@+Name:          TreeT+Version:       0.0+Cabal-Version: >=1.6+Synopsis:   Transformer for Data.Tree +Description:++    This library implements a transformer for the Data.Tree package++Category:      Control,Monads+License:       PublicDomain+License-File:  LICENSE+Author:        Rahul Gopinath+Maintainer:    gopinath@eecs.oregonstate.edu+Bug-Reports:   mailto:gopinath@eecs.oregonstate.edu+Build-Type:    Simple+Stability:     experimental++Library+  Build-Depends:    base >= 2 && < 5, containers, transformers+  Exposed-Modules:  Control.TreeT++Source-Repository head+  type:     darcs+  location: