packages feed

functor-classes-compat-1.0.1: src-implicit/containers/Data/Tree/Functor/Classes.hs

{-# OPTIONS_GHC -fno-warn-orphans #-}
module Data.Tree.Functor.Classes () where

import Data.Functor.Classes
import Data.Tree            (Tree(..))

instance Eq1 Tree where eq1 = (==)
instance Ord1 Tree where
  compare1 (Node a fa) (Node b fb) =
    compare a b `mappend` liftCompareList compare1 fa fb

liftCompareList :: (a -> a -> Ordering) -> [a] -> [a] -> Ordering
liftCompareList cmp = go
  where go [] [] = EQ
        go [] (_:_) = LT
        go (_:_) [] = GT
        go (a:as) (b:bs) = cmp a b `mappend` go as bs

instance Show1 Tree where showsPrec1 = showsPrec