{-# LANGUAGE DeriveFunctor #-} module Language.Ltml.AST.Node ( Node (..) ) where import Control.Functor.Utils (Pure (pure')) import Language.Ltml.AST.Label (Label) data Node a = Node (Maybe Label) a deriving (Int -> Node a -> ShowS [Node a] -> ShowS Node a -> String (Int -> Node a -> ShowS) -> (Node a -> String) -> ([Node a] -> ShowS) -> Show (Node a) forall a. Show a => Int -> Node a -> ShowS forall a. Show a => [Node a] -> ShowS forall a. Show a => Node a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall a. Show a => Int -> Node a -> ShowS showsPrec :: Int -> Node a -> ShowS $cshow :: forall a. Show a => Node a -> String show :: Node a -> String $cshowList :: forall a. Show a => [Node a] -> ShowS showList :: [Node a] -> ShowS Show, (forall a b. (a -> b) -> Node a -> Node b) -> (forall a b. a -> Node b -> Node a) -> Functor Node forall a b. a -> Node b -> Node a forall a b. (a -> b) -> Node a -> Node b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f $cfmap :: forall a b. (a -> b) -> Node a -> Node b fmap :: forall a b. (a -> b) -> Node a -> Node b $c<$ :: forall a b. a -> Node b -> Node a <$ :: forall a b. a -> Node b -> Node a Functor) instance Pure Node where pure' :: forall a. a -> Node a pure' = Maybe Label -> a -> Node a forall a. Maybe Label -> a -> Node a Node Maybe Label forall a. Maybe a Nothing