plutus-core-1.60.0.0: Language library for Plutus Core
Safe HaskellSafe-Inferred
LanguageHaskell2010

PlutusCore.Pretty

Synopsis

Basic types and functions

data Doc ann #

The abstract data type Doc ann represents pretty documents that have been annotated with data of type ann.

More specifically, a value of type Doc represents a non-empty set of possible layouts of a document. The layout functions select one of these possibilities, taking into account things like the width of the output document.

The annotation is an arbitrary piece of data associated with (part of) a document. Annotations may be used by the rendering backends in order to display output differently, such as

  • color information (e.g. when rendering to the terminal)
  • mouseover text (e.g. when rendering to rich HTML)
  • whether to show something or not (to allow simple or detailed versions)

The simplest way to display a Doc is via the Show class.

>>> putStrLn (show (vsep ["hello", "world"]))
hello
world

Instances

Instances details
Functor Doc

Alter the document’s annotations.

This instance makes Doc more flexible (because it can be used in Functor-polymorphic values), but fmap is much less readable compared to using reAnnotate in code that only works for Doc anyway. Consider using the latter when the type does not matter.

Instance details

Defined in Prettyprinter.Internal

Methods

fmap :: (a -> b) -> Doc a -> Doc b #

(<$) :: a -> Doc b -> Doc a #

IsString (Doc ann)
>>> pretty ("hello\nworld")
hello
world

This instance uses the Pretty Doc instance, and uses the same newline to emptyDoc hcat

>>> mappend "hello" "world" :: Doc ann
helloworld
Instance details

Defined in hcat [x, y]

>>> "hello" <> "world" :: Doc ann
helloworld
Instance details

Defined in defaultLayoutOptions, ignoring all annotations.

Instance details

Defined in Text)) PageWidth -> Doc ann)))) :+: (C1 ('MetaCons "Nesting" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Int -> Doc ann))) :+: C1 ('MetaCons "Annotated" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Doc ann)))))))

class Pretty a where #

Overloaded conversion to Doc.

Laws:

  1. output should be pretty. :-)

Minimal complete definition

pretty

Methods

pretty :: a -> Doc ann #

>>> pretty 1 <+> pretty "hello" <+> pretty 1.234
1 hello 1.234

prettyList :: [a] -> Doc ann #

prettyList is only used to define the instance Pretty a => Pretty [a]. In normal circumstances only the pretty function is used.

>>> prettyList [1, 23, 456]
[1, 23, 456]

Instances

Instances details
Pretty Void

Finding a good example for printing something that does not exist is hard, so here is an example of printing a list full of nothing.

>>> pretty ([] :: [Void])
[]
Instance details

Defined in Text

Automatically converts all newlines to line.

>>> pretty ("hello\nworld" :: Text)
hello
world

Note that group:

>>> group (pretty ("hello\nworld" :: Text))
hello world

Manually use Text] -> Doc ann #

Pretty Prettyprinter.Internal

Methods

pretty :: Text -> Doc ann #

prettyList :: [Text] -> Doc ann #

Pretty Integer
>>> pretty (2^123 :: Integer)
10633823966279326983230456482242756608
Instance details

Defined in Prettyprinter.Internal

Methods

pretty :: Natural -> Doc ann #

prettyList :: [Natural] -> Doc ann #

Pretty ()
>>> pretty ()
()

The argument is not used:

>>> pretty (error "Strict?" :: ())
()
Instance details

Defined in Prettyprinter.Internal

Methods

pretty :: () -> Doc ann #

prettyList :: [()] -> Doc ann #

Pretty Bool
>>> pretty True
True
Instance details

Defined in line as a more readable alternative.

>>> pretty 'f' <> pretty 'o' <> pretty 'o'
foo
>>> pretty ("string" :: String)
string
Instance details

Defined in Prettyprinter.Internal

Methods

pretty :: Char -> Doc ann #

prettyList :: [Char] -> Doc ann #

Pretty Double
>>> pretty (exp 1 :: Double)
2.71828182845904...
Instance details

Defined in Prettyprinter.Internal

Methods

pretty :: Double -> Doc ann #

prettyList :: [Double] -> Doc ann #

Pretty Float
>>> pretty (pi :: Float)
3.1415927
Instance details

Defined in Prettyprinter.Internal

Methods

pretty :: Float -> Doc ann #

prettyList :: [Float] -> Doc ann #

Pretty Int
>>> pretty (123 :: Int)
123
Instance details

Defined in Prettyprinter.Internal

Methods

pretty :: Word -> Doc ann #

prettyList :: [Word] -> Doc ann #

Pretty a => Pretty (Identity a)
>>> pretty (Identity 1)
1
Instance details

Defined in Prettyprinter.Internal

Methods

pretty :: NonEmpty a -> Doc ann #

prettyList :: [NonEmpty a] -> Doc ann #

Pretty a => Pretty (Spine a) #
>>> import Text.Pretty
>>> pretty (SpineCons 'a' $ SpineLast 'b')
[a, b] 
Instance details

Defined in PlutusCore.Builtin.KnownType

Methods

pretty :: Spine a -> Doc ann #

prettyList :: [Spine a] -> Doc ann #

Pretty (BuiltinSemanticsVariant DefaultFun) # 
Instance details

Defined in PlutusCore.Default.Builtins

Pretty ann => Pretty (Kind ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Default

Methods

pretty :: Kind ann -> Doc ann0 #

prettyList :: [Kind ann] -> Doc ann0 #

Pretty a => Pretty (Normalized a) # 
Instance details

Defined in PlutusCore.Core.Type

Methods

pretty :: Normalized a -> Doc ann #

prettyList :: [Normalized a] -> Doc ann #

Pretty (DefaultUni a) #

This always pretty-prints parens around type applications (e.g. (list bool)) and doesn't pretty-print them otherwise (e.g. integer).

Instance details

Defined in PlutusCore.Default.Universe

Methods

pretty :: DefaultUni a -> Doc ann #

prettyList :: [DefaultUni a] -> Doc ann #

Pretty ann => Pretty (UniqueError ann) # 
Instance details

Defined in PlutusCore.Error

Methods

pretty :: UniqueError ann -> Doc ann0 #

prettyList :: [UniqueError ann] -> Doc ann0 #

PrettyClassic a => Pretty (EvaluationResult a) # 
Instance details

Defined in PlutusCore.Evaluation.Result

Methods

pretty :: EvaluationResult a -> Doc ann #

prettyList :: [EvaluationResult a] -> Doc ann #

PrettyReadable a => Pretty (AsReadable a) # 
Instance details

Defined in PlutusCore.Pretty.Readable

Methods

pretty :: AsReadable a -> Doc ann #

prettyList :: [AsReadable a] -> Doc ann #

Pretty (SomeTypeIn DefaultUni) # 
Instance details

Defined in PlutusCore.Default.Universe

Pretty (SomeTypeIn uni) => Pretty (SomeTypeIn (Kinded uni)) # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

Methods

pretty :: SomeTypeIn (Kinded uni) -> Doc ann #

prettyList :: [SomeTypeIn (Kinded uni)] -> Doc ann #

(Show fun, Ord fun) => Pretty (CekExTally fun) # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode

Methods

pretty :: CekExTally fun -> Doc ann #

prettyList :: [CekExTally fun] -> Doc ann #

(Show fun, Ord fun) => Pretty (TallyingSt fun) # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode

Methods

pretty :: TallyingSt fun -> Doc ann #

prettyList :: [TallyingSt fun] -> Doc ann #

Show fun => Pretty (ExBudgetCategory fun) # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal

Methods

pretty :: ExBudgetCategory fun -> Doc ann #

prettyList :: [ExBudgetCategory fun] -> Doc ann #

Pretty a => Pretty (Maybe a)

Ignore Nothings, print Just contents.

>>> pretty (Just True)
True
>>> braces (pretty (Nothing :: Maybe Bool))
{}
>>> pretty [Just 1, Nothing, Just 3, Nothing]
[1, 3]
Instance details

Defined in Prettyprinter.Internal

Methods

pretty :: Maybe a -> Doc ann #

prettyList :: [Maybe a] -> Doc ann #

Pretty a => Pretty [a]
>>> pretty [1,2,3]
[1, 2, 3]
Instance details

Defined in AttachDefaultPrettyConfig config a] -> Doc ann #

PrettyBy config a => Pretty (AttachPrettyConfig config a)
>>> data Cfg = Cfg
>>> data D = D
>>> instance PrettyBy Cfg D where prettyBy Cfg D = "D"
>>> pretty $ AttachPrettyConfig Cfg D
D
Instance details

Defined in Text.PrettyBy.Internal

Methods

pretty :: AttachPrettyConfig config a -> Doc ann #

prettyList :: [AttachPrettyConfig config a] -> Doc ann #

(Closed uni, Everywhere uni PrettyConst) => Pretty (Some (ValueOf uni)) # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

Methods

pretty :: Some (ValueOf uni) -> Doc ann #

prettyList :: [Some (ValueOf uni)] -> Doc ann #

(Pretty a1, Pretty a2) => Pretty (a1, a2)
>>> pretty (123, "hello")
(123, hello)
Instance details

Defined in Prettyprinter.Internal

Methods

pretty :: Const a b -> Doc ann #

prettyList :: [Const a b] -> Doc ann #

(Pretty err, Pretty a, Pretty b) => Pretty (HeadSpine err a b) #
>>> import Text.Pretty
>>> pretty (HeadOnly 'z')
z
>>> pretty (HeadSpine 'f' (SpineCons 'x' $ SpineLast 'y'))
f `applyN` [x, y] 
Instance details

Defined in PlutusCore.Builtin.KnownType

Methods

pretty :: HeadSpine err a b -> Doc ann #

prettyList :: [HeadSpine err a b] -> Doc ann #

(PrettyClassic tyname, PrettyParens (SomeTypeIn uni), Pretty ann) => Pretty (Type tyname uni ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Default

Methods

pretty :: Type tyname uni ann -> Doc ann0 #

prettyList :: [Type tyname uni ann] -> Doc ann0 #

Pretty (CekState uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.SteppableCek.Internal

Methods

pretty :: CekState uni fun ann -> Doc ann0 #

prettyList :: [CekState uni fun ann] -> Doc ann0 #

(Pretty a1, Pretty a2, Pretty a3) => Pretty (a1, a2, a3)
>>> pretty (123, "hello", False)
(123, hello, False)
Instance details

Defined in Prettyprinter.Internal

Methods

pretty :: (a1, a2, a3) -> Doc ann #

prettyList :: [(a1, a2, a3)] -> Doc ann #

(PrettyClassic name, PrettyUni uni, Pretty fun, Pretty ann) => Pretty (Program name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Default

Methods

pretty :: Program name uni fun ann -> Doc ann0 #

prettyList :: [Program name uni fun ann] -> Doc ann0 #

(PrettyClassic name, PrettyUni uni, Pretty fun, Pretty ann) => Pretty (Term name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Default

Methods

pretty :: Term name uni fun ann -> Doc ann0 #

prettyList :: [Term name uni fun ann] -> Doc ann0 #

(PrettyClassic tyname, PrettyClassic name, PrettyUni uni, Pretty fun, Pretty ann) => Pretty (Program tyname name uni fun ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Default

Methods

pretty :: Program tyname name uni fun ann -> Doc ann0 #

prettyList :: [Program tyname name uni fun ann] -> Doc ann0 #

(PrettyClassic tyname, PrettyClassic name, PrettyUni uni, Pretty fun, Pretty ann) => Pretty (Term tyname name uni fun ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Default

Methods

pretty :: Term tyname name uni fun ann -> Doc ann0 #

prettyList :: [Term tyname name uni fun ann] -> Doc ann0 #

class PrettyBy config a where #

A class for pretty-printing values in a configurable manner.

A basic example:

>>> data Case = UpperCase | LowerCase
>>> data D = D
>>> instance PrettyBy Case D where prettyBy UpperCase D = "D"; prettyBy LowerCase D = "d"
>>> prettyBy UpperCase D
D
>>> prettyBy LowerCase D
d

The library provides instances for common types like Integer or Bool, so you can't define your own PrettyBy SomeConfig Integer instance. And for the same reason you should not define instances like PrettyBy SomeAnotherConfig a for universally quantified a, because such an instance would overlap with the existing ones. Take for example

>>> data ViaShow = ViaShow
>>> instance Show a => PrettyBy ViaShow a where prettyBy ViaShow = pretty . show

with such an instance prettyBy ViaShow (1 :: Int) throws an error about overlapping instances:

• Overlapping instances for PrettyBy ViaShow Int
    arising from a use of ‘prettyBy’
  Matching instances:
    instance PrettyDefaultBy config Int => PrettyBy config Int
    instance [safe] Show a => PrettyBy ViaShow a

There's a newtype provided specifically for the purpose of defining a PrettyBy instance for any a: PrettyAny. Read its docs for details on when you might want to use it.

The PrettyBy instance for common types is defined in a way that allows to override default pretty-printing behaviour, read the docs of HasPrettyDefaults for details.

Minimal complete definition

Nothing

Methods

prettyBy :: config -> a -> Doc ann #

Pretty-print a value of type a the way a config specifies it. The default implementation of prettyBy is in terms of pretty, defaultPrettyFunctorBy or defaultPrettyBifunctorBy depending on the kind of the data type that you're providing an instance for. For example, the default implementation of prettyBy for a monomorphic type is going to be "ignore the config and call pretty over the value":

>>> newtype N = N Int deriving newtype (Pretty)
>>> instance PrettyBy () N
>>> prettyBy () (N 42)
42

The default implementation of prettyBy for a Functor is going to be in terms of defaultPrettyFunctorBy:

>>> newtype N a = N a deriving stock (Functor) deriving newtype (Pretty)
>>> instance PrettyBy () a => PrettyBy () (N a)
>>> prettyBy () (N (42 :: Int))
42

It's fine for the data type to have a phantom parameter as long as the data type is still a defaultPrettyFunctorBy is used again:

>>> newtype N a = N Int deriving stock (Functor) deriving newtype (Pretty)
>>> instance PrettyBy () (N b)
>>> prettyBy () (N 42)
42

If the data type has a single parameter of any other kind, then it's not a functor and so like in the monomorphic case pretty is used:

>>> newtype N (b :: Bool) = N Int deriving newtype (Pretty)
>>> instance PrettyBy () (N b)
>>> prettyBy () (N 42)
42

Same applies to a data type with two parameters: if both the parameters are of kind Type, then the data type is assumed to be a defaultPrettyBifunctorBy is used. If the right parameter is of kind Type and the left parameter is of any other kind, then we fallback to assuming the data type is a Functor and defining prettyBy as defaultPrettyFunctorBy. If both the parameters are not of kind Type, we fallback to implementing prettyBy in terms of pretty like in the monomorphic case.

Note that in all those cases a Pretty instance for the data type has to already exist, so that we can derive a PrettyBy one in terms of it. If it doesn't exist or if your data type is not supported (for example, if it has three or more parameters of kind Type), then you'll need to provide the implementation manually.

prettyListBy :: config -> [a] -> Doc ann #

prettyListBy is used to define the default PrettyBy instance for [a] and NonEmpty a. In normal circumstances only the prettyBy function is used. The default implementation of prettyListBy is in terms of defaultPrettyFunctorBy.

Instances

Instances details
PrettyBy PrettyConfigPlc DefaultFun # 
Instance details

Defined in PlutusCore.Default.Builtins

PrettyBy ConstConfig ByteString # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

PrettyBy ConstConfig Element # 
Instance details

Defined in PlutusCore.Crypto.BLS12_381.G1

Methods

prettyBy :: ConstConfig -> Element -> Doc ann #

prettyListBy :: ConstConfig -> [Element] -> Doc ann #

PrettyBy ConstConfig Element # 
Instance details

Defined in PlutusCore.Crypto.BLS12_381.G2

Methods

prettyBy :: ConstConfig -> Element -> Doc ann #

prettyListBy :: ConstConfig -> [Element] -> Doc ann #

PrettyBy ConstConfig MlResult # 
Instance details

Defined in PlutusCore.Crypto.BLS12_381.Pairing

PrettyBy ConstConfig Data # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

Methods

prettyBy :: ConstConfig -> Data -> Doc ann #

prettyListBy :: ConstConfig -> [Data] -> Doc ann #

PrettyBy ConstConfig K # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

Methods

prettyBy :: ConstConfig -> K -> Doc ann #

prettyListBy :: ConstConfig -> [K] -> Doc ann #

PrettyBy ConstConfig Quantity # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

PrettyBy ConstConfig Value # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

Methods

prettyBy :: ConstConfig -> Value -> Doc ann #

prettyListBy :: ConstConfig -> [Value] -> Doc ann #

PrettyDefaultBy config Void => PrettyBy config Void
>>> prettyBy () ([] :: [Void])
[]
Instance details

Defined in Text

Automatically converts all newlines to line.

>>> prettyBy () ("hello\nworld" :: Strict.Text)
hello
world
Instance details

Defined in Text] -> Doc ann #

PrettyDefaultBy config Text.PrettyBy.Internal

Methods

prettyBy :: config -> Text -> Doc ann #

prettyListBy :: config -> [Text] -> Doc ann #

PrettyDefaultBy config Integer => PrettyBy config Integer
>>> prettyBy () (2^(123 :: Int) :: Integer)
10633823966279326983230456482242756608
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> Integer -> Doc ann #

prettyListBy :: config -> [Integer] -> Doc ann #

PrettyDefaultBy config Natural => PrettyBy config Natural
>>> prettyBy () (123 :: Natural)
123
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> Natural -> Doc ann #

prettyListBy :: config -> [Natural] -> Doc ann #

PrettyDefaultBy config () => PrettyBy config ()
>>> prettyBy () ()
()

The argument is not used:

>>> prettyBy () (error "Strict?" :: ())
()
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> () -> Doc ann #

prettyListBy :: config -> [()] -> Doc ann #

PrettyDefaultBy config Bool => PrettyBy config Bool
>>> prettyBy () True
True
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> Bool -> Doc ann #

prettyListBy :: config -> [Bool] -> Doc ann #

PrettyDefaultBy config Char => PrettyBy config Char

By default a String (i.e. [Char]) is converted to a Text first and then pretty-printed. So make sure that if you have any non-default pretty-printing for Char or Text, they're in sync.

>>> prettyBy () 'a'
a
>>> prettyBy () "abc"
abc
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> Char -> Doc ann #

prettyListBy :: config -> [Char] -> Doc ann #

PrettyDefaultBy config Double => PrettyBy config Double
>>> prettyBy () (pi :: Double)
3.141592653589793
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> Double -> Doc ann #

prettyListBy :: config -> [Double] -> Doc ann #

PrettyDefaultBy config Float => PrettyBy config Float
>>> prettyBy () (pi :: Float)
3.1415927
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> Float -> Doc ann #

prettyListBy :: config -> [Float] -> Doc ann #

PrettyDefaultBy config Int => PrettyBy config Int
>>> prettyBy () (123 :: Int)
123
Instance details

Defined in RenderContext -> [SomeTypeIn DefaultUni] -> Doc ann #

PrettyDefaultBy config (Identity a) => PrettyBy config (Identity a)
>>> prettyBy () (Identity True)
True
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> Identity a -> Doc ann #

prettyListBy :: config -> [Identity a] -> Doc ann #

PrettyDefaultBy config (NonEmpty a) => PrettyBy config (NonEmpty a)

prettyBy for NonEmpty a is defined in terms of prettyListBy by default.

>>> prettyBy () (True :| [False])
[True, False]
>>> prettyBy () ('a' :| "bc")
abc
>>> prettyBy () (Just False :| [Nothing, Just True])
[False, True]
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> NonEmpty a -> Doc ann #

prettyListBy :: config -> [NonEmpty a] -> Doc ann #

PrettyDefaultBy config (Set a) => PrettyBy config (Set a) # 
Instance details

Defined in PlutusCore.Pretty.Extra

Methods

prettyBy :: config -> Set a -> Doc ann #

prettyListBy :: config -> [Set a] -> Doc ann #

PrettyDefaultBy config (Spine a) => PrettyBy config (Spine a) # 
Instance details

Defined in PlutusCore.Builtin.KnownType

Methods

prettyBy :: config -> Spine a -> Doc ann #

prettyListBy :: config -> [Spine a] -> Doc ann #

PrettyBy config (t NameAnn) => PrettyBy config (ScopeCheckError t) # 
Instance details

Defined in PlutusCore.Check.Scoping

Methods

prettyBy :: config -> ScopeCheckError t -> Doc ann #

prettyListBy :: config -> [ScopeCheckError t] -> Doc ann #

PrettyBy config a => PrettyBy config (Normalized a) # 
Instance details

Defined in PlutusCore.Core.Type

Methods

prettyBy :: config -> Normalized a -> Doc ann #

prettyListBy :: config -> [Normalized a] -> Doc ann #

(HasPrettyDefaults config ~ 'True, Pretty fun) => PrettyBy config (MachineError fun) # 
Instance details

Defined in PlutusCore.Evaluation.Machine.Exception

Methods

prettyBy :: config -> MachineError fun -> Doc ann #

prettyListBy :: config -> [MachineError fun] -> Doc ann #

PrettyBy config a => PrettyBy config (EvaluationResult a) # 
Instance details

Defined in PlutusCore.Evaluation.Result

Methods

prettyBy :: config -> EvaluationResult a -> Doc ann #

prettyListBy :: config -> [EvaluationResult a] -> Doc ann #

PrettyDefaultBy config (AsReadable a) => PrettyBy config (AsReadable a) # 
Instance details

Defined in PlutusCore.Pretty.Readable

Methods

prettyBy :: config -> AsReadable a -> Doc ann #

prettyListBy :: config -> [AsReadable a] -> Doc ann #

(Show fun, Ord fun) => PrettyBy config (CekExTally fun) # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode

Methods

prettyBy :: config -> CekExTally fun -> Doc ann #

prettyListBy :: config -> [CekExTally fun] -> Doc ann #

(Show fun, Ord fun) => PrettyBy config (TallyingSt fun) # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode

Methods

prettyBy :: config -> TallyingSt fun -> Doc ann #

prettyListBy :: config -> [TallyingSt fun] -> Doc ann #

Pretty a => PrettyBy config (IgnorePrettyConfig a)
>>> data Cfg = Cfg
>>> data D = D
>>> instance Pretty D where pretty D = "D"
>>> prettyBy Cfg $ IgnorePrettyConfig D
D
Instance details

Defined in Vector a] -> Doc ann #

PrettyDefaultBy config (Maybe a) => PrettyBy config (Maybe a)

By default a [Maybe a] is converted to [a] first and only then pretty-printed.

>>> braces $ prettyBy () (Just True)
{True}
>>> braces $ prettyBy () (Nothing :: Maybe Bool)
{}
>>> prettyBy () [Just False, Nothing, Just True]
[False, True]
>>> prettyBy () [Nothing, Just 'a', Just 'b', Nothing, Just 'c']
abc
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> Maybe a -> Doc ann #

prettyListBy :: config -> [Maybe a] -> Doc ann #

PrettyDefaultBy config [a] => PrettyBy config [a]

prettyBy for [a] is defined in terms of prettyListBy by default.

>>> prettyBy () [True, False]
[True, False]
>>> prettyBy () "abc"
abc
>>> prettyBy () [Just False, Nothing, Just True]
[False, True]
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> [a] -> Doc ann #

prettyListBy :: config -> [[a]] -> Doc ann #

(PrettyUni uni, Pretty fun) => PrettyBy PrettyConfigPlc (CkValue uni fun) # 
Instance details

Defined in PlutusCore.Evaluation.Machine.Ck

Methods

prettyBy :: PrettyConfigPlc -> CkValue uni fun -> Doc ann #

prettyListBy :: PrettyConfigPlc -> [CkValue uni fun] -> Doc ann #

(PrettyUni uni, Pretty fun) => PrettyBy PrettyConfigPlc (DischargeResult uni fun) # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal

Methods

prettyBy :: PrettyConfigPlc -> DischargeResult uni fun -> Doc ann #

prettyListBy :: PrettyConfigPlc -> [DischargeResult uni fun] -> Doc ann #

(Closed uni, Everywhere uni PrettyConst) => PrettyBy ConstConfig (ValueOf uni a) # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

Methods

prettyBy :: ConstConfig -> ValueOf uni a -> Doc ann #

prettyListBy :: ConstConfig -> [ValueOf uni a] -> Doc ann #

(Closed uni, Everywhere uni PrettyConst) => PrettyBy ConstConfig (Some (ValueOf uni)) # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

Methods

prettyBy :: ConstConfig -> Some (ValueOf uni) -> Doc ann #

prettyListBy :: ConstConfig -> [Some (ValueOf uni)] -> Doc ann #

PrettyDefaultBy config (Either a b) => PrettyBy config (Either a b) #

An instance extending the set of types supporting default pretty-printing with Either.

Instance details

Defined in PlutusPrelude

Methods

prettyBy :: config -> Either a b -> Doc ann #

prettyListBy :: config -> [Either a b] -> Doc ann #

PrettyDefaultBy config (Map k v) => PrettyBy config (Map k v) # 
Instance details

Defined in PlutusCore.Pretty.Extra

Methods

prettyBy :: config -> Map k v -> Doc ann #

prettyListBy :: config -> [Map k v] -> Doc ann #

(HasPrettyDefaults config ~ 'True, PrettyBy config structural, Pretty operational) => PrettyBy config (EvaluationError structural operational) # 
Instance details

Defined in PlutusCore.Evaluation.Error

Methods

prettyBy :: config -> EvaluationError structural operational -> Doc ann #

prettyListBy :: config -> [EvaluationError structural operational] -> Doc ann #

(PrettyBy config cause, PrettyBy config err) => PrettyBy config (ErrorWithCause err cause) # 
Instance details

Defined in PlutusCore.Evaluation.ErrorWithCause

Methods

prettyBy :: config -> ErrorWithCause err cause -> Doc ann #

prettyListBy :: config -> [ErrorWithCause err cause] -> Doc ann #

PrettyDefaultBy config (a, b) => PrettyBy config (a, b)
>>> prettyBy () (False, "abc")
(False, abc)
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> (a, b) -> Doc ann #

prettyListBy :: config -> [(a, b)] -> Doc ann #

DefaultPrettyPlcStrategy (Type tyname uni ann) => PrettyBy PrettyConfigPlc (Type tyname uni ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Type tyname uni ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Type tyname uni ann] -> Doc ann0 #

(PrettyUni uni, Pretty fun, Pretty ann) => PrettyBy PrettyConfigPlc (Error uni fun ann) # 
Instance details

Defined in PlutusCore.Error

Methods

prettyBy :: PrettyConfigPlc -> Error uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Error uni fun ann] -> Doc ann0 #

(PrettyUni uni, Pretty fun) => PrettyBy PrettyConfigPlc (CekValue uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal

Methods

prettyBy :: PrettyConfigPlc -> CekValue uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [CekValue uni fun ann] -> Doc ann0 #

PrettyDefaultBy config (Const a b) => PrettyBy config (Const a b)

Non-polykinded, because Pretty (Const a b) is not polykinded either.

>>> prettyBy () (Const 1 :: Const Integer Bool)
1
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> Const a b -> Doc ann #

prettyListBy :: config -> [Const a b] -> Doc ann #

PrettyDefaultBy config (HeadSpine err a b) => PrettyBy config (HeadSpine err a b) # 
Instance details

Defined in PlutusCore.Builtin.KnownType

Methods

prettyBy :: config -> HeadSpine err a b -> Doc ann #

prettyListBy :: config -> [HeadSpine err a b] -> Doc ann #

PrettyDefaultBy config (a, b, c) => PrettyBy config (a, b, c)
>>> prettyBy () ('a', "bcd", True)
(a, bcd, True)
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> (a, b, c) -> Doc ann #

prettyListBy :: config -> [(a, b, c)] -> Doc ann #

(Pretty term, PrettyUni uni, Pretty fun, Pretty ann) => PrettyBy PrettyConfigPlc (TypeError term uni fun ann) # 
Instance details

Defined in PlutusCore.Error

Methods

prettyBy :: PrettyConfigPlc -> TypeError term uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [TypeError term uni fun ann] -> Doc ann0 #

DefaultPrettyPlcStrategy (UnrestrictedProgram name uni fun ann) => PrettyBy PrettyConfigPlc (UnrestrictedProgram name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Flat

Methods

prettyBy :: PrettyConfigPlc -> UnrestrictedProgram name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [UnrestrictedProgram name uni fun ann] -> Doc ann0 #

DefaultPrettyPlcStrategy (Program name uni fun ann) => PrettyBy PrettyConfigPlc (Program name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Program name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Program name uni fun ann] -> Doc ann0 #

DefaultPrettyPlcStrategy (Term name uni fun ann) => PrettyBy PrettyConfigPlc (Term name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Term name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Term name uni fun ann] -> Doc ann0 #

PrettyBy config (Term name uni fun a) => PrettyBy config (EvalOrder name uni fun a) # 
Instance details

Defined in UntypedPlutusCore.Purity

Methods

prettyBy :: config -> EvalOrder name uni fun a -> Doc ann #

prettyListBy :: config -> [EvalOrder name uni fun a] -> Doc ann #

PrettyBy config (Term name uni fun a) => PrettyBy config (EvalTerm name uni fun a) # 
Instance details

Defined in UntypedPlutusCore.Purity

Methods

prettyBy :: config -> EvalTerm name uni fun a -> Doc ann #

prettyListBy :: config -> [EvalTerm name uni fun a] -> Doc ann #

DefaultPrettyPlcStrategy (Program tyname name uni fun ann) => PrettyBy PrettyConfigPlc (Program tyname name uni fun ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Program tyname name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Program tyname name uni fun ann] -> Doc ann0 #

DefaultPrettyPlcStrategy (Term tyname name uni fun ann) => PrettyBy PrettyConfigPlc (Term tyname name uni fun ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Term tyname name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Term tyname name uni fun ann] -> Doc ann0 #

(Pretty ann, PrettyBy config (Type tyname uni ann), PrettyBy config (Term tyname name uni fun ann)) => PrettyBy config (NormCheckError tyname name uni fun ann) # 
Instance details

Defined in PlutusCore.Error

Methods

prettyBy :: config -> NormCheckError tyname name uni fun ann -> Doc ann0 #

prettyListBy :: config -> [NormCheckError tyname name uni fun ann] -> Doc ann0 #

Pretty ann => PrettyBy (PrettyConfigClassic configName) (Kind ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Kind ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Kind ann] -> Doc ann0 #

PrettyBy (PrettyConfigReadable configName) (Kind a) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> Kind a -> Doc ann #

prettyListBy :: PrettyConfigReadable configName -> [Kind a] -> Doc ann #

PrettyReadableBy configName a => PrettyBy (PrettyConfigReadable configName) (Parened a) # 
Instance details

Defined in PlutusCore.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> Parened a -> Doc ann #

prettyListBy :: PrettyConfigReadable configName -> [Parened a] -> Doc ann #

PrettyReadableBy configName tyname => PrettyBy (PrettyConfigReadable configName) (TyVarDecl tyname ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> TyVarDecl tyname ann -> Doc ann0 #

prettyListBy :: PrettyConfigReadable configName -> [TyVarDecl tyname ann] -> Doc ann0 #

(PrettyClassicBy configName tyname, PrettyParens (SomeTypeIn uni), Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Type tyname uni ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Type tyname uni ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Type tyname uni ann] -> Doc ann0 #

(PrettyReadableBy configName tyname, PrettyParens (SomeTypeIn uni)) => PrettyBy (PrettyConfigReadable configName) (Type tyname uni a) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> Type tyname uni a -> Doc ann #

prettyListBy :: PrettyConfigReadable configName -> [Type tyname uni a] -> Doc ann #

(PrettyClassic name, PrettyUni uni, Pretty fun, Pretty ann) => PrettyBy (PrettyConfigClassic PrettyConfigName) (UnrestrictedProgram name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Flat

(PrettyClassicBy configName (Term name uni fun ann), Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Program name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Program name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Program name uni fun ann] -> Doc ann0 #

(PrettyClassicBy configName name, PrettyUni uni, Pretty fun, Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Term name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Term name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Term name uni fun ann] -> Doc ann0 #

(PrettyReadable name, PrettyUni uni, Pretty fun) => PrettyBy (PrettyConfigReadable PrettyConfigName) (UnrestrictedProgram name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Flat

(PrettyReadableBy configName tyname, PrettyReadableBy configName name, PrettyUni uni) => PrettyBy (PrettyConfigReadable configName) (VarDecl tyname name uni ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> VarDecl tyname name uni ann -> Doc ann0 #

prettyListBy :: PrettyConfigReadable configName -> [VarDecl tyname name uni ann] -> Doc ann0 #

PrettyReadableBy configName (Term name uni fun a) => PrettyBy (PrettyConfigReadable configName) (Program name uni fun a) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> Program name uni fun a -> Doc ann #

prettyListBy :: PrettyConfigReadable configName -> [Program name uni fun a] -> Doc ann #

(PrettyReadableBy configName name, PrettyUni uni, Pretty fun, Show configName) => PrettyBy (PrettyConfigReadable configName) (Term name uni fun a) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> Term name uni fun a -> Doc ann #

prettyListBy :: PrettyConfigReadable configName -> [Term name uni fun a] -> Doc ann #

(PrettyClassicBy configName (Term tyname name uni fun ann), Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Program tyname name uni fun ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Program tyname name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Program tyname name uni fun ann] -> Doc ann0 #

(PrettyClassicBy configName tyname, PrettyClassicBy configName name, PrettyUni uni, Pretty fun, Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Term tyname name uni fun ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Term tyname name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Term tyname name uni fun ann] -> Doc ann0 #

PrettyReadableBy configName (Term tyname name uni fun a) => PrettyBy (PrettyConfigReadable configName) (Program tyname name uni fun a) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> Program tyname name uni fun a -> Doc ann #

prettyListBy :: PrettyConfigReadable configName -> [Program tyname name uni fun a] -> Doc ann #

(PrettyReadableBy configName tyname, PrettyReadableBy configName name, PrettyUni uni, Pretty fun) => PrettyBy (PrettyConfigReadable configName) (Term tyname name uni fun a) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> Term tyname name uni fun a -> Doc ann #

prettyListBy :: PrettyConfigReadable configName -> [Term tyname name uni fun a] -> Doc ann #

newtype IgnorePrettyConfig a #

A newtype wrapper around a whose point is to provide a PrettyBy config instance for anything that has a Pretty instance.

Constructors

IgnorePrettyConfig 

Instances

Instances details
Pretty a => PrettyBy config (IgnorePrettyConfig a)
>>> data Cfg = Cfg
>>> data D = D
>>> instance Pretty D where pretty D = "D"
>>> prettyBy Cfg $ IgnorePrettyConfig D
D
Instance details

Defined in Text.PrettyBy.Internal

Methods

prettyBy :: config -> IgnorePrettyConfig a -> Doc ann #

prettyListBy :: config -> [IgnorePrettyConfig a] -> Doc ann #

data AttachPrettyConfig config a #

A config together with some value. The point is to provide a Pretty instance for anything that has a PrettyBy config instance.

Constructors

AttachPrettyConfig !config !a 

Instances

Instances details
PrettyBy config a => Pretty (AttachPrettyConfig config a)
>>> data Cfg = Cfg
>>> data D = D
>>> instance PrettyBy Cfg D where prettyBy Cfg D = "D"
>>> pretty $ AttachPrettyConfig Cfg D
D
Instance details

Defined in Text #

Render RenderContext. An expression printed in this context gets enclosed in parens unless its outermost operator (if any) binds even stronger than function application.

Defaults

prettyPlc :: PrettyPlc a => a -> Doc ann #

Pretty-print a value in the default mode using the classic view.

displayPlc :: (PrettyPlc a, Render str) => a -> str #

Render a value to String in the default mode using the classic view.

prettyPlcSimple :: PrettyPlc a => a -> Doc ann #

Pretty-print a value in the debug mode using the classic view.

displayPlcSimple :: (PrettyPlc a, Render str) => a -> str #

Render a value to String in the debug mode using the classic view.

Global configuration

data CondensedErrors #

Whether to pretty-print PLC errors in full or with some information omitted.

Instances

Instances details
Show CondensedErrors # 
Instance details

Defined in PlutusCore.Pretty.Plc

Eq CondensedErrors # 
Instance details

Defined in PlutusCore.Pretty.Plc

type DefaultPrettyPlcStrategy a = (PrettyClassic a, PrettyReadable a) #

A constraint that allows to derive PrettyBy PrettyConfigPlc instances, see below.

newtype PrettyConfigPlcOptions #

Options for pretty-printing PLC entities.

data PrettyConfigPlc #

Global configuration used for pretty-printing PLC entities.

Instances

Instances details
Show PrettyConfigPlc # 
Instance details

Defined in PlutusCore.Pretty.Plc

HasPrettyConfigName PrettyConfigPlc # 
Instance details

Defined in PlutusCore.Pretty.Plc

PrettyBy PrettyConfigPlc DefaultFun # 
Instance details

Defined in PlutusCore.Default.Builtins

DefaultPrettyPlcStrategy (Kind ann) => PrettyBy PrettyConfigPlc (Kind ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Kind ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Kind ann] -> Doc ann0 #

PrettyBy PrettyConfigPlc a => PrettyBy PrettyConfigPlc (ExpectedShapeOr a) # 
Instance details

Defined in PlutusCore.Error

DefaultPrettyPlcStrategy a => PrettyBy PrettyConfigPlc (PrettyAny a) # 
Instance details

Defined in PlutusCore.Pretty.Plc

(PrettyUni uni, Pretty fun) => PrettyBy PrettyConfigPlc (CkValue uni fun) # 
Instance details

Defined in PlutusCore.Evaluation.Machine.Ck

Methods

prettyBy :: PrettyConfigPlc -> CkValue uni fun -> Doc ann #

prettyListBy :: PrettyConfigPlc -> [CkValue uni fun] -> Doc ann #

(PrettyUni uni, Pretty fun) => PrettyBy PrettyConfigPlc (DischargeResult uni fun) # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal

Methods

prettyBy :: PrettyConfigPlc -> DischargeResult uni fun -> Doc ann #

prettyListBy :: PrettyConfigPlc -> [DischargeResult uni fun] -> Doc ann #

DefaultPrettyPlcStrategy (Type tyname uni ann) => PrettyBy PrettyConfigPlc (Type tyname uni ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Type tyname uni ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Type tyname uni ann] -> Doc ann0 #

(PrettyUni uni, Pretty fun, Pretty ann) => PrettyBy PrettyConfigPlc (Error uni fun ann) # 
Instance details

Defined in PlutusCore.Error

Methods

prettyBy :: PrettyConfigPlc -> Error uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Error uni fun ann] -> Doc ann0 #

(PrettyUni uni, Pretty fun) => PrettyBy PrettyConfigPlc (CekValue uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal

Methods

prettyBy :: PrettyConfigPlc -> CekValue uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [CekValue uni fun ann] -> Doc ann0 #

(Pretty term, PrettyUni uni, Pretty fun, Pretty ann) => PrettyBy PrettyConfigPlc (TypeError term uni fun ann) # 
Instance details

Defined in PlutusCore.Error

Methods

prettyBy :: PrettyConfigPlc -> TypeError term uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [TypeError term uni fun ann] -> Doc ann0 #

DefaultPrettyPlcStrategy (UnrestrictedProgram name uni fun ann) => PrettyBy PrettyConfigPlc (UnrestrictedProgram name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Flat

Methods

prettyBy :: PrettyConfigPlc -> UnrestrictedProgram name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [UnrestrictedProgram name uni fun ann] -> Doc ann0 #

DefaultPrettyPlcStrategy (Program name uni fun ann) => PrettyBy PrettyConfigPlc (Program name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Program name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Program name uni fun ann] -> Doc ann0 #

DefaultPrettyPlcStrategy (Term name uni fun ann) => PrettyBy PrettyConfigPlc (Term name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Term name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Term name uni fun ann] -> Doc ann0 #

DefaultPrettyPlcStrategy (Program tyname name uni fun ann) => PrettyBy PrettyConfigPlc (Program tyname name uni fun ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Program tyname name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Program tyname name uni fun ann] -> Doc ann0 #

DefaultPrettyPlcStrategy (Term tyname name uni fun ann) => PrettyBy PrettyConfigPlc (Term tyname name uni fun ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Term tyname name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigPlc -> [Term tyname name uni fun ann] -> Doc ann0 #

type HasPrettyDefaults PrettyConfigPlc # 
Instance details

Defined in PlutusCore.Pretty.Plc

type PrettyPlc = PrettyBy PrettyConfigPlc #

The "pretty-printable PLC entity" constraint.

prettyConfigPlcOptions :: PrettyConfigPlcOptions #

The PrettyConfigPlcOptions used by default: print errors in full.

prettyConfigPlcClassic :: PrettyConfigPlcOptions -> PrettyConfigPlc #

The PrettyConfigPlc used by default: use the classic view and print neither Uniques, nor name attachments.

prettyConfigPlcClassicSimple :: PrettyConfigPlcOptions -> PrettyConfigPlc #

The PrettyConfigPlc used for debugging: use the classic view and print Uniques, but not name attachments.

prettyConfigPlcReadable :: PrettyConfigPlcOptions -> PrettyConfigPlc #

The PrettyConfigPlc used by default and for readability: use the refined view and print Uniques but not name attachments.

prettyConfigPlcReadableSimple :: PrettyConfigPlcOptions -> PrettyConfigPlc #

The PrettyConfigPlc used for debugging and readability: use the refined view and print neither Uniques nor name attachments.

Custom functions for PLC types.

prettyPlcClassic :: PrettyPlc a => a -> Doc ann #

Pretty-print a PLC value in the default mode using the classic view.

prettyPlcClassicSimple :: PrettyPlc a => a -> Doc ann #

Pretty-print a PLC value without unique indices using the classic view.

prettyPlcReadable :: PrettyPlc a => a -> Doc ann #

Pretty-print a PLC value in the default mode using the readable view.

prettyPlcReadableSimple :: PrettyPlc a => a -> Doc ann #

Pretty-print a PLC value without unique indices using the readable view.

prettyPlcCondensedErrorBy :: PrettyPlc a => (PrettyConfigPlcOptions -> PrettyConfigPlc) -> a -> Doc ann #

Pretty-print a PLC value using the condensed way (see CondensedErrors) of pretty-printing PLC errors (in case there are any).

prettyConfigName :: PrettyConfigName #

The PrettyConfigName used by default: print Unique indexes after nams.

prettyConfigNameSimple :: PrettyConfigName #

The PrettyConfigName to be used when Unique indices don't matter. Easier to read.

Classic view

data PrettyConfigClassic configName #

Configuration for the classic pretty-printing.

Constructors

PrettyConfigClassic 

Fields

Instances

Instances details
Show configName => Show (PrettyConfigClassic configName) # 
Instance details

Defined in PlutusCore.Pretty.Classic

Methods

showsPrec :: Int -> PrettyConfigClassic configName -> ShowS #

show :: PrettyConfigClassic configName -> String #

showList :: [PrettyConfigClassic configName] -> ShowS #

configName ~ PrettyConfigName => HasPrettyConfigName (PrettyConfigClassic configName) # 
Instance details

Defined in PlutusCore.Pretty.Classic

Pretty ann => PrettyBy (PrettyConfigClassic configName) (Kind ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Kind ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Kind ann] -> Doc ann0 #

(PrettyClassicBy configName tyname, PrettyParens (SomeTypeIn uni), Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Type tyname uni ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Type tyname uni ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Type tyname uni ann] -> Doc ann0 #

(PrettyClassic name, PrettyUni uni, Pretty fun, Pretty ann) => PrettyBy (PrettyConfigClassic PrettyConfigName) (UnrestrictedProgram name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Flat

(PrettyClassicBy configName (Term name uni fun ann), Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Program name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Program name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Program name uni fun ann] -> Doc ann0 #

(PrettyClassicBy configName name, PrettyUni uni, Pretty fun, Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Term name uni fun ann) # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Term name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Term name uni fun ann] -> Doc ann0 #

(PrettyClassicBy configName (Term tyname name uni fun ann), Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Program tyname name uni fun ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Program tyname name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Program tyname name uni fun ann] -> Doc ann0 #

(PrettyClassicBy configName tyname, PrettyClassicBy configName name, PrettyUni uni, Pretty fun, Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Term tyname name uni fun ann) # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Term tyname name uni fun ann -> Doc ann0 #

prettyListBy :: PrettyConfigClassic configName -> [Term tyname name uni fun ann] -> Doc ann0 #

type HasPrettyDefaults (PrettyConfigClassic _1) # 
Instance details

Defined in PlutusCore.Pretty.Classic

type PrettyClassicBy configName = PrettyBy (PrettyConfigClassic configName) #

The "classically pretty-printable" constraint.

consAnnIf :: Pretty ann => PrettyConfigClassic configName -> ann -> [Doc dann] -> [Doc dann] #

Add a pretty-printed annotation to a list of Docs if the given config enables pretty-printing of annotations.

prettyClassic :: PrettyClassic a => a -> Doc ann #

Pretty-print a value in the default mode using the classic view.

prettyClassicSimple :: PrettyClassic a => a -> Doc ann #

Pretty-print a value in the simple mode using the classic view.

Readable view

data ShowKinds #

Instances

Instances details
RenderContext #

pcrShowKinds :: forall configName. Lens' (PrettyConfigReadable configName) ShowKinds #

type PrettyReadableBy configName = PrettyBy (PrettyConfigReadable configName) #

The "readably pretty-printable" constraint.

newtype AsReadable a #

For rendering things in a readable manner regardless of the pretty-printing function chosen. I.e. all of show, pretty, prettyClassic will use PrettyReadable instead of doing what they normally do. prettyBy config (AsReadable x) requires config to have a PrettyConfigName and respects it.

This wrapper can be particularly useful if you want to apply a function having a Show or Pretty or PrettyClassic or PrettyPlc or whatever constraint, but want to get the argument rendered in a readable manner instead.

Constructors

AsReadable 

Fields

Instances

Instances details
(HasPrettyConfigName config, PrettyReadable a) => DefaultPrettyBy config (AsReadable a) # 
Instance details

Defined in PlutusCore.Pretty.Readable

Methods

defaultPrettyBy :: config -> AsReadable a -> Doc ann #

defaultPrettyListBy :: config -> [AsReadable a] -> Doc ann #

PrettyDefaultBy config (AsReadable a) => PrettyBy config (AsReadable a) # 
Instance details

Defined in PlutusCore.Pretty.Readable

Methods

prettyBy :: config -> AsReadable a -> Doc ann #

prettyListBy :: config -> [AsReadable a] -> Doc ann #

PrettyReadable a => Show (AsReadable a) # 
Instance details

Defined in PlutusCore.Pretty.Readable

PrettyReadable a => Pretty (AsReadable a) # 
Instance details

Defined in PlutusCore.Pretty.Readable

Methods

pretty :: AsReadable a -> Doc ann #

prettyList :: [AsReadable a] -> Doc ann #

data Parened a #

A value of type a to render in parens using the readable pretty-printer.

Constructors

Parened 

Instances

Instances details
PrettyReadableBy configName a => PrettyBy (PrettyConfigReadable configName) (Parened a) # 
Instance details

Defined in PlutusCore.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> Parened a -> Doc ann #

prettyListBy :: PrettyConfigReadable configName -> [Parened a] -> Doc ann #

inBraces :: a -> Parened a #

Enclose the given value, so that it's rendered inside of braces with no additional parens regardless of the AnyToDoc config ann -> NonEmpty (Doc ann)) -> m (Doc ann) #

Lay out an iteration application, providing to the caller a function to render the head of the application and a function to render each of the arguments.

iterInterAppPrettyM :: (MonadPrettyReadable configName env m, PrettyReadableBy configName fun, PrettyReadableBy configName ty, PrettyReadableBy configName term) => fun -> [Either ty term] -> m (Doc ann) #

Lay out interleaved function applications either as

foo {a} x {b} y z

or as

foo
  {a}
  x
  {b}
  y
  z

MonadPrettyContext config env m, PrettyBy config fun, PrettyBy config term) => fun -> [term] -> m (Doc ann) #

Lay out iterated function applications either as

foo x y z

or as

foo
  x
  y
  z 

Utils

prettyBytes :: RenderContext inside, so that we don't add redundant parens to the output.

Constructors

ConstConfig 

Fields

NonDefaultPrettyBy ConstConfig (a, b) # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

Methods

nonDefaultPrettyBy :: ConstConfig -> (a, b) -> Doc ann #

nonDefaultPrettyListBy :: ConstConfig -> [(a, b)] -> Doc ann #

(Closed uni, Everywhere uni PrettyConst) => PrettyBy ConstConfig (ValueOf uni a) # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

Methods

prettyBy :: ConstConfig -> ValueOf uni a -> Doc ann #

prettyListBy :: ConstConfig -> [ValueOf uni a] -> Doc ann #

(Closed uni, Everywhere uni PrettyConst) => PrettyBy ConstConfig (Some (ValueOf uni)) # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

Methods

prettyBy :: ConstConfig -> Some (ValueOf uni) -> Doc ann #

prettyListBy :: ConstConfig -> [Some (ValueOf uni)] -> Doc ann #

type HasPrettyDefaults ConstConfig # 
Instance details

Defined in PlutusCore.Pretty.PrettyConst

type PrettyUni uni = (PrettyParens (SomeTypeIn uni), Closed uni, uni `Everywhere` PrettyConst) #

The set of constraints we need to be able to print built-in types and their values.

type ThrowableBuiltins uni fun = (PrettyUni uni, Pretty fun, Typeable uni, Typeable fun) #

The set of constraints we need to be able to throw exceptions with things with built-in types and functions in them.