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 +35/−0
- LICENSE +15/−0
- Setup.hs +2/−0
- TreeT.cabal +24/−0
+ 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: