packages feed

bff-0.1: SimpleTree.hs

{-# OPTIONS_GHC  -XTemplateHaskell  #-}
-----------------------------------------------------------------------------
-- |
-- Module      :  SimpleTree
-- 
-- Maintainer  :  Janis Voigtlaender
-- Stability   :  experimental
--
-- A very simple binary Tree data structure.
-----------------------------------------------------------------------------
module SimpleTree where

import Data.Traversable
import Data.Foldable
import Data.Zippable
import Data.DeriveTH
import Data.Derive.Traversable
import Data.Derive.Zippable
import Control.Applicative

data Tree a = Leaf a | Node (Tree a) (Tree a) deriving (Show, Eq, Ord, Read)

$( derive makeTraversable ''Tree )

instance Foldable Tree where
  foldMap = foldMapDefault

instance Functor Tree where
  fmap = fmapDefault

$( derive makeZippable ''Tree )