{-# LANGUAGE OverloadedStrings #-} module Prettyprinter.Debug ( prettyBind , prettyBound , (<#*>) ) where import Data.Semigroup ((<>)) import Prettyprinter (Doc, Pretty (pretty), hardline, indent, (<+>)) (<#*>) :: Doc a -> Doc a -> Doc a <#*> :: Doc a -> Doc a -> Doc a (<#*>) Doc a x Doc a y = Doc a x Doc a -> Doc a -> Doc a forall a. Semigroup a => a -> a -> a <> Doc a forall ann. Doc ann hardline Doc a -> Doc a -> Doc a forall a. Semigroup a => a -> a -> a <> Int -> Doc a -> Doc a forall ann. Int -> Doc ann -> Doc ann indent Int 2 Doc a y prettyBind :: (Pretty c, Pretty b) => (c, b) -> Doc a prettyBind :: (c, b) -> Doc a prettyBind (c i, b j) = c -> Doc a forall a ann. Pretty a => a -> Doc ann pretty c i Doc a -> Doc a -> Doc a forall ann. Doc ann -> Doc ann -> Doc ann <+> Doc a "→" Doc a -> Doc a -> Doc a forall ann. Doc ann -> Doc ann -> Doc ann <+> b -> Doc a forall a ann. Pretty a => a -> Doc ann pretty b j prettyBound :: (Pretty a, Pretty c) => (a, c) -> Doc b prettyBound :: (a, c) -> Doc b prettyBound (a i, c e) = a -> Doc b forall a ann. Pretty a => a -> Doc ann pretty a i Doc b -> Doc b -> Doc b forall ann. Doc ann -> Doc ann -> Doc ann <+> Doc b "←" Doc b -> Doc b -> Doc b forall ann. Doc ann -> Doc ann -> Doc ann <#*> c -> Doc b forall a ann. Pretty a => a -> Doc ann pretty c e