packages feed

rose-trees (empty) → 0.0.1

raw patch · 6 files changed

+107/−0 lines, 6 filesdep +QuickCheckdep +basedep +containerssetup-changed

Dependencies added: QuickCheck, base, containers, data-default, hspec, pseudo-trie, quickcheck-instances, semigroups, transformers

Files

+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2015, Athan Clark++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++    * Neither the name of Athan Clark nor the names of other+      contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ rose-trees.cabal view
@@ -0,0 +1,39 @@+Name:                   rose-trees+Version:                0.0.1+Author:                 Athan Clark <athan.clark@gmail.com>+Maintainer:             Athan Clark <athan.clark@gmail.com>+License:                BSD3+License-File:           LICENSE+Synopsis:               A collection of rose tree structures.+-- Description:+Cabal-Version:          >= 1.10+Build-Type:             Simple++Library+  Default-Language:     Haskell2010+  HS-Source-Dirs:       src+  GHC-Options:          -Wall+  Exposed-Modules:      Data.Tree.Rose+  Other-Modules:        Data.Tree.Rose.Internal+  Build-Depends:        base >= 4 && < 5+                      , containers+                      , semigroups+                      , data-default+                      , pseudo-trie+                      , transformers++Test-Suite spec+  Type:                 exitcode-stdio-1.0+  Default-Language:     Haskell2010+  Hs-Source-Dirs:       src+                      , test+  Ghc-Options:          -Wall+  Main-Is:              Spec.hs+  Build-Depends:        base+                      , hspec+                      , QuickCheck+                      , quickcheck-instances++Source-Repository head+  Type:                 git+  Location:             https://github.com/athanclark/rose-trees.git
+ src/Data/Tree/Rose.hs view
@@ -0,0 +1,32 @@+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Tree.Rose where++import Data.Tree.Rose.Internal++import Data.Tree (Tree (Node))+import Data.Tree.Knuth+import Data.Trie.Pseudo hiding (Nil)+import Data.List.NonEmpty (NonEmpty (..))+import Data.Default+import Data.Functor.Identity++class RoseTree (c :: * -> *) (u :: * -> *) (t :: * -> *) | c -> u, c -> t where+  (@->) :: t a -> u (c a) -> c a++infixr 9 @->++instance RoseTree Tree [] Identity where+  (@->) (Identity x) xs = Node x xs++newtype PT t a = PT (t, Maybe a)++instance Default t => RoseTree (PseudoTrie t) NonEmpty (PT t) where+  (@->) (PT x) xs = More x xs++instance RoseTree KnuthForest Identity Identity where+  (@->) (Identity x) (Identity xs) = Fork x xs Nil
+ src/Data/Tree/Rose/Internal.hs view
@@ -0,0 +1,3 @@+module Data.Tree.Rose.Internal+    (+    ) where
+ test/Spec.hs view
@@ -0,0 +1,1 @@+{-# OPTIONS_GHC -F -pgmF hspec-discover #-}