|
|
|
|
|
Description |
This module defines classes and functions for pretty-printing. It also
exports a number of helpful debugging and other utilities such as trace and panic.
The interface to this module is very similar to the standard Hughes-PJ pretty printing
module, except that it exports a number of additional functions that are rarely used,
and works over the SDoc type.
|
|
Synopsis |
|
|
|
|
Type classes
|
|
class Outputable a where | Source |
|
Class designating that some type has an SDoc representation
| | Methods | | | Instances | Outputable Bool | Outputable Char | Outputable Int | Outputable Word | Outputable Word16 | Outputable Word32 | Outputable () | Outputable PackageId | Outputable ModuleName | Outputable Module | Outputable OccName | Outputable FastString | Outputable InlineSpec | Outputable InlinePragma | Outputable RuleMatchInfo | Outputable Activation | Outputable SuccessFlag | Outputable StrictnessMark | Outputable OccInfo | Outputable OverlapFlag | Outputable RecFlag | Outputable TopLevelFlag | Outputable FixityDirection | Outputable Fixity | Outputable WarningTxt | Outputable FunctionOrData | Outputable Unique | Outputable RegClass | Outputable Reg | Outputable RealReg | Outputable VirtualReg | Outputable MetaDetails | Outputable SrcSpan | Outputable SrcLoc | Outputable IdDetails | Outputable SlotSet | Outputable StackPlacement | Outputable SlotClass | Outputable HsDocString | Outputable Fingerprint | Outputable TyThing | Outputable PredType | Outputable Type | Outputable TyCon | Outputable Name | Outputable ModLocation | Outputable CCallConv | Outputable CCallSpec | Outputable CExportSpec | Outputable Safety | Outputable ForeignCall | Outputable Serialized | Outputable Var | Outputable InScopeSet | Outputable StrictSig | Outputable DmdResult | Outputable DmdType | Outputable Demands | Outputable Demand | Outputable StableLoc | Outputable VolatileLoc | Outputable CgIdInfo | Outputable DefMeth | Outputable Class | Outputable ImportSpec | Outputable Parent | Outputable GlobalRdrElt | Outputable RdrName | Outputable DataCon | Outputable PrimRep | Outputable TvSubst | Outputable HsBang | Outputable OverLitVal | Outputable HsLit | Outputable Literal | Outputable CoercionI | Outputable PrimCall | Outputable PrimOp | Outputable CostCentre | Outputable CostCentreStack | Outputable UnfoldingGuidance | Outputable Unfolding | Outputable CoreRule | Outputable AltCon | Outputable TickBoxOp | Outputable LBVarInfo | Outputable FloatOutSwitches | Outputable SimplifierMode | Outputable GhcMode | Outputable Refinement | Outputable HsWrapper | Outputable DocDecl | Outputable ForeignExport | Outputable ForeignImport | Outputable NewOrData | Outputable IfaceTyCon | Outputable IfacePredType | Outputable IfaceType | Outputable IfaceBndr | Outputable IfaceConAlt | Outputable IfaceNote | Outputable IfaceExpr | Outputable IfaceInfoItem | Outputable IfaceIdInfo | Outputable IfaceIdDetails | Outputable IfaceRule | Outputable IfaceFamInst | Outputable IfaceInst | Outputable IfaceClassOp | Outputable IfaceDecl | Outputable Subst | Outputable Instance | Outputable FamInst | Outputable CLabel | Outputable BlockSet | Outputable BlockId | Outputable Width | Outputable CmmCat | Outputable CmmType | Outputable GlobalReg | Outputable LocalReg | Outputable CmmLit | Outputable Area | Outputable CmmReg | Outputable CmmExpr | Outputable CgRep | Outputable UpdateFlag | Outputable AltType | Outputable C_SRT | Outputable CmmStatic | Outputable ForeignHint | Outputable CmmSafety | Outputable CmmStmt | Outputable CmmInfo | Outputable LiveInfo | Outputable SpillStats | Outputable Store | Outputable ValueDirection | Outputable ForeignConvention | Outputable Convention | Outputable Last | Outputable Middle | Outputable AvailRegs | Outputable DualLive | Outputable ArgSummary | Outputable CallCtxt | Outputable ExprSize | Outputable Instr | Outputable Loc | Outputable Instr | Outputable Instr | Outputable BreakInfo | Outputable BCInstr | Outputable UnlinkedBCO | Outputable CompiledByteCode | Outputable Protocol | Outputable Status | Outputable CgLoc | Outputable CgIdInfo | Outputable CmmTopForInfoTables | Outputable TopSRT | Outputable LRep | Outputable EtaInfo | Outputable Unlinked | Outputable Linkable | Outputable ModSummary | Outputable FixItem | Outputable Warnings | Outputable CoreModule | Outputable TargetId | Outputable Target | Outputable InstOrigin | Outputable Inst | Outputable WhereFrom | Outputable RefinementVisibility | Outputable TcTyThing | Outputable ThStage | Outputable TcTyVarBind | Outputable Discr | Outputable TickInfo | Outputable CallKey | Outputable UsageDetails | Outputable FloatingBind | Outputable EquationInfo | Outputable RewriteInst | Outputable EqConfig | Outputable AvailHow | Outputable Avails | Outputable Outer | Outputable ClosureType | Outputable Term | Outputable Tick | Outputable Level | Outputable FloatFlag | Outputable Floats | Outputable SimplSR | Outputable ArgOcc | Outputable HowBound | Outputable Value | Outputable DupFlag | Outputable SimplCont | Outputable TcSigInfo | Outputable a => Outputable [a] | Outputable a => Outputable (Maybe a) | Outputable a => Outputable (SCC a) | Outputable node => Outputable (Edge node) | Outputable node => Outputable (Graph node) | Outputable name => Outputable (IPName name) | Outputable a => Outputable (UniqFM a) | Outputable a => Outputable (Bag a) | Outputable e => Outputable (Located e) | OutputableBndr name => Outputable (Pat name) | OutputableBndr id => Outputable (HsQuasiQuote id) | Outputable a => Outputable (UniqFM a) | Outputable a => Outputable (Lazy a) | OutputableBndr id => Outputable (HsSplice id) | OutputableBndr id => Outputable (HsExpr id) | Outputable a => Outputable (OccEnv a) | Outputable name => Outputable (IE name) | Outputable name => Outputable (ImportDecl name) | Outputable a => Outputable (NameEnv a) | Outputable name => Outputable (AnnTarget name) | Outputable name => Outputable (HsTyVarBndr name) | OutputableBndr name => Outputable (HsType name) | OutputableBndr name => Outputable (HsPred name) | OutputableBndr id => Outputable (HsOverLit id) | Outputable b => Outputable (TaggedBndr b) | OutputableBndr b => Outputable (Bind b) | OutputableBndr b => Outputable (Expr b) | Outputable name => Outputable (FixitySig name) | OutputableBndr name => Outputable (Sig name) | OutputableBndr id => Outputable (IPBind id) | OutputableBndr id => Outputable (HsIPBinds id) | OutputableBndr name => Outputable (AnnDecl name) | OutputableBndr name => Outputable (WarnDecl name) | OutputableBndr name => Outputable (RuleBndr name) | OutputableBndr name => Outputable (RuleDecl name) | OutputableBndr name => Outputable (ForeignDecl name) | OutputableBndr name => Outputable (DefaultDecl name) | OutputableBndr name => Outputable (DerivDecl name) | OutputableBndr name => Outputable (InstDecl name) | OutputableBndr name => Outputable (ResType name) | OutputableBndr name => Outputable (ConDecl name) | OutputableBndr name => Outputable (TyClDecl name) | OutputableBndr name => Outputable (SpliceDecl name) | OutputableBndr name => Outputable (HsGroup name) | OutputableBndr name => Outputable (HsDecl name) | OutputableBndr id => Outputable (ArithSeqInfo id) | OutputableBndr id => Outputable (HsBracket id) | OutputableBndr id => Outputable (HsCmdTop id) | OutputableBndr name => Outputable (HsModule name) | Outputable a => Outputable (BlockEnv a) | Outputable bdee => Outputable (GenStgArg bdee) | Outputable a => Outputable (CmmHinted a) | Outputable instr => Outputable (GenBasicBlock instr) | Outputable instr => Outputable (ListGraph instr) | Outputable instr => Outputable (LiveInstr instr) | Outputable instr => Outputable (RegAllocStats instr) | Outputable l => Outputable (ZLast l) | Outputable a => Outputable (ParamLocation a) | Outputable a => Outputable (ProtoBCO a) | Outputable a => Outputable (NonVoid a) | Outputable n => Outputable (GenAvailInfo n) | (Outputable a, Outputable b) => Outputable (Either a b) | (Outputable a, Outputable b) => Outputable (a, b) | (Outputable key, Outputable elt) => Outputable (FiniteMap key elt) | (OutputableBndr idL, OutputableBndr idR) => Outputable (HsBindLR idL idR) | (OutputableBndr idL, OutputableBndr idR) => Outputable (HsValBindsLR idL idR) | (OutputableBndr idL, OutputableBndr idR) => Outputable (HsLocalBindsLR idL idR) | (OutputableBndr id, Outputable arg) => Outputable (HsRecField id arg) | (OutputableBndr id, Outputable arg) => Outputable (HsRecFields id arg) | (OutputableBndr idL, OutputableBndr idR) => Outputable (StmtLR idL idR) | (Outputable bndr, Outputable bdee, Ord bdee) => Outputable (GenStgRhs bndr bdee) | (Outputable bndr, Outputable bdee, Ord bdee) => Outputable (GenStgExpr bndr bdee) | (Outputable bndr, Outputable bdee, Ord bdee) => Outputable (GenStgBinding bndr bdee) | (Outputable m, Outputable l, LastNode l) => Outputable (LGraph m l) | (Outputable m, Outputable l, LastNode l) => Outputable (Graph m l) | (Outputable m, Outputable l, LastNode l) => Outputable (Block m l) | (Outputable m, Outputable l) => Outputable (ZTail m l) | (Outputable a, Outputable b, Outputable c) => Outputable (a, b, c) | (Outputable d, Outputable info, Outputable i) => Outputable (GenCmmTop d info i) | (Outputable d, Outputable info, Outputable g) => Outputable (GenCmm d info g) | (Outputable a, Outputable b, Outputable c, Outputable d) => Outputable (a, b, c, d) | (Outputable a, Outputable b, Outputable c, Outputable d, Outputable e) => Outputable (a, b, c, d, e) |
|
|
|
|
When we print a binder, we often want to print its type too.
The OutputableBndr class encapsulates this idea.
| | Methods | | | Instances | |
|
|
Pretty printing combinators
|
|
|
|
|
|
|
Returns the seperated concatenation of the pretty printed things.
|
|
|
Returns the comma-seperated concatenation of the pretty printed things.
|
|
|
Returns the comma-seperated concatenation of the quoted pretty printed things.
[x,y,z] ==> `x', `y', `z'
|
|
|
:: a -> SDoc | The pretty printing function to use
| -> [a] | The things to be pretty printed
| -> SDoc | SDoc where the things have been pretty printed,
comma-separated and finally packed into a paragraph.
|
|
|
|
|
|
Indent SDoc some specified amount
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Join two SDoc together horizontally without a gap
|
|
|
Join two SDoc together horizontally with a gap between them
|
|
|
Concatenate SDoc horizontally
|
|
|
Concatenate SDoc horizontally with a space between each one
|
|
|
Join two SDoc together vertically; if there is
no vertical overlap it dovetails the two onto one line
|
|
|
Join two SDoc together vertically
|
|
|
Concatenate SDoc vertically with dovetailing
|
|
|
Separate: is either like hsep or like vcat, depending on what fits
|
|
|
Catenate: is either like hcat or like vcat, depending on what fits
|
|
|
A paragraph-fill combinator. It's much like sep, only it
keeps fitting things on one line until it can't fit any more.
|
|
|
This behaves like fsep, but it uses <> for horizontal conposition rather than <+>
|
|
|
:: SDoc | The header
| -> Int | Amount to indent the hung body
| -> SDoc | The hung body, indented and placed below the header
| -> SDoc | |
|
|
|
:: SDoc | The punctuation
| -> [SDoc] | The list that will have punctuation added between every adjacent pair of elements
| -> [SDoc] | Punctuated list
|
|
|
|
|
|
|
|
Converts an integer to a verbal index:
speakNth 1 = text "first"
speakNth 5 = text "fifth"
speakNth 21 = text "21st"
|
|
|
Converts a strictly positive integer into a number of times:
speakNTimes 1 = text "once"
speakNTimes 2 = text "twice"
speakNTimes 4 = text "4 times"
|
|
|
Converts an integer to a verbal multiplicity:
speakN 0 = text "none"
speakN 5 = text "five"
speakN 10 = text "10"
|
|
|
Converts an integer and object description to a statement about the
multiplicity of those objects:
speakNOf 0 (text "melon") = text "no melons"
speakNOf 1 (text "melon") = text "one melon"
speakNOf 3 (text "melon") = text "three melons"
|
|
|
Determines the pluralisation suffix appropriate for the length of a list:
plural [] = char 's'
plural ["Hello"] = empty
plural ["Hello", "World"] = char 's'
|
|
Converting SDoc into strings and outputing it
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Special combinator for showing character literals.
|
|
|
Special combinator for showing string literals.
|
|
|
|
|
|
|
|
Controlling the style in which output is printed
|
|
|
BindingSite is used to tell the thing that prints binder what
language construct is binding the identifier. This can be used
to decide how much info to print.
| Constructors | LambdaBind | | CaseBind | | LetBind | |
|
|
|
|
|
|
|
|
type PrintUnqualified = (QueryQualifyName, QueryQualifyModule) | Source |
|
|
|
|
|
|
|
Constructors | NameUnqual | | NameQual ModuleName | | NameNotInScope1 | | NameNotInScope2 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Style for printing error messages
|
|
|
|
|
|
|
|
|
|
|
|
|
Error handling and debugging utilities
|
|
|
Throw an exception saying bug in GHC
|
|
|
Panic with an assertation failure, recording the given file and line number.
Should typically be accessed with the ASSERT family of macros
|
|
|
Specialization of pprPanic that can be safely used with FastInt
|
|
|
Throw an exception saying bug in pgm being compiled (used for unusual program errors)
|
|
|
If debug output is on, show some SDoc on the screen
|
|
|
Just warn about an assertion failure, recording the given file and line number.
Should typically be accessed with the WARN macros
|
|
|
When called, trace outputs the string in its first argument, before
returning the second argument as its result. The trace function is not
referentially transparent, and should only be used for debugging, or for
monitoring execution. Some implementations of trace may decorate the string
that's output to indicate that you're tracing. The function is implemented on
top of putTraceMsg.
|
|
|
|
|
|
|
|
|
|
Produced by Haddock version 2.6.1 |