term-rewriting-0.1: src/Data/Rewriting/Term/Pretty.hs
-- This file is part of the 'term-rewriting' library. It is licensed
-- under an MIT license. See the accompanying 'LICENSE' file for details.
--
-- Auhtors: Martin Avanzini, Christian Sternagel
module Data.Rewriting.Term.Pretty (
prettyTerm,
) where
import Data.Rewriting.Term.Type
import Text.PrettyPrint.ANSI.Leijen
-- | Given a pretty printer @f@ for function symbols and pretty printer @v@ for variables
-- @prettyTerm f v@ produces a pretty printer for terms
prettyTerm :: (f -> Doc) -> (v -> Doc) -> Term f v -> Doc
prettyTerm _ var (Var x) = var x
prettyTerm fun var (Fun f ts) = fun f <> args where
args = encloseSep lparen rparen comma [prettyTerm fun var ti | ti <- ts]
instance (Pretty f, Pretty v) => Pretty (Term f v) where
pretty = prettyTerm pretty pretty