data PrintError : TypePrintFileError : FileError -> PrintErrorShow PrintErrorPrinterMonad : (Type -> Type) -> Type -> Typedata Indent : TypezeroIndent : IndentincreaseIndent : Indent -> Indentinterface Printer : Type -> Typeprint : HasIO io => File -> Indent => a -> PrinterMonad io ()Printer BadExpressionPrinter IdentifierPrinter BasicLiteralExpression (CompositLiteral t es) => Printer t => All Printer es => Printer (CompositLiteral t es)Expression (FunctionLiteral ts ps rs sts) => Printer (FunctionType ts ps rs) => Printer (BlockStatement sts) => Printer (FunctionLiteral ts ps rs sts)Expression (CallExpression f as e) => Printer f => All Printer as => Printer (CallExpression f as e)Expression (ParenExpression e) => Printer e => Printer (ParenExpression e)Expression (CastExpression t e) => Printer t => Printer e => Printer (CastExpression t e)Expression (TypeAssertExpression e t) => Printer e => Printer t => Printer (TypeAssertExpression e t)Expression (MakeExpression t es) => Printer t => All Printer es => Printer (MakeExpression t es)Expression (SelectorExpression e) => Printer e => Printer (SelectorExpression e)Expression (IndexExpression e i) => Printer e => Printer i => Printer (IndexExpression e i)Expression (SliceExpression e l h m) => Printer e => Printer l => Printer h => Printer m => Printer (SliceExpression e l h m)Expression (UnaryExpression e) => Printer e => Printer (UnaryExpression e)Expression (StarExpression e) => Printer e => Printer (StarExpression e)Expression (BinaryExpression e1 e2) => Printer e1 => Printer e2 => Printer (BinaryExpression e1 e2)Expression (KeyValueExpression e1 e2) => Printer e1 => Printer e2 => Printer (KeyValueExpression e1 e2)Printer ImportSpecSpecification (TypeSpec ts t) => Printer (FieldList ts) => Printer t => Printer (TypeSpec ts t)Specification (ValueSpec t es) => Printer t => All Printer es => Printer (ValueSpec t es)Printer BadStatementStatement (ExpressionStatement e) => Printer e => Printer (ExpressionStatement e)Statement (DeclarationStatement d) => Printer d => Printer (DeclarationStatement d)Statement (BlockStatement sts) => All Printer sts => Printer (BlockStatement sts)Statement (AssignmentStatement ls rs) => All Printer ls => All Printer rs => Printer (AssignmentStatement ls rs)Statement (IncDecStatement e o) => Show (IncOrDec o) => Printer e => Printer (IncDecStatement e o)Statement (DeferStatement f as e) => Printer (CallExpression f as e) => Printer (DeferStatement f as e)Statement (LabeledStatement s) => Printer s => Printer (LabeledStatement s)Statement (BranchStatement kw) => Printer (BranchStatement kw)Statement (ForStatement i c p sts) => Printer i => Printer c => Printer p => Printer (BlockStatement sts) => Printer (ForStatement i c p sts)Statement (KeyValueRangeStatement k v a r sts) => Printer k => Printer v => Show (AssignOrDefine a) => Printer r => Printer (BlockStatement sts) => Printer (KeyValueRangeStatement k v a r sts)Statement (ValueRangeStatement v a r sts) => Printer v => Show (AssignOrDefine a) => Printer r => Printer (BlockStatement sts) => Printer (ValueRangeStatement v a r sts)Statement (RangeStatement r sts) => Printer r => Printer (BlockStatement sts) => Printer (RangeStatement r sts)Statement (IfStatement i c sts e) => Printer i => Printer c => Printer (BlockStatement sts) => Printer e => Printer (IfStatement i c sts e)Statement (SwitchStatement i e sts) => Printer i => Printer e => All Printer sts => Printer (SwitchStatement i e sts)Statement (CaseClause es sts) => All Printer es => All Printer sts => Printer (CaseClause es sts)Statement (ReturnStatement rs) => All Printer rs => Printer (ReturnStatement rs){auto {conArg:14591} : GoType t} -> Printer t => Printer (Field t)All Printer ts => Printer (FieldList ts)Printer BadTypePrinter TypeIdentifierGoType (StructType es) => All Printer es => Printer (FieldList es) => Printer (StructType es)GoType (ArrayType l e) => Printer l => Printer e => Printer (ArrayType l e)GoType (MapType k v) => Printer k => Printer v => Printer (MapType k v)GoType (FunctionType ts ps rs) => All Printer ts => All Printer ps => All Printer rs => Printer (FunctionType ts ps rs)Declaration (FuncDeclaration rcs ts ps rs sts) => All Printer ps => All Printer rs => Printer (BlockStatement sts) => Printer (FuncDeclaration rcs ts ps rs sts)Declaration (GenericDeclaration k es) => All Printer es => Show (GenericDeclarationToken k) => Printer (GenericDeclaration k es){auto {conArg:16830} : All Declaration ds} -> All Printer ds => Printer (File ds)print : Printer a => HasIO io => File -> Indent => a -> PrinterMonad io ()printFile : HasIO io => {auto {conArg:17385} : All Declaration ds} -> Printer (File ds) => String -> File ds -> io (Either PrintError ())