{- |
    Module      :  $Header$
    Copyright   :  (c) 2008        Sebastian Fischer
                       2011 - 2015 Björn Peemöller
                       2016        Finn Teegen
    License     :  BSD-3-clause

    Maintainer  :  bjp@informatik.uni-kiel.de
    Stability   :  experimental
    Portability :  portable

    Transform a CurrySyntax module into a string representation without any
    pretty printing.

    Behaves like a derived Show instance even on parts with a specific one.
-}
module Curry.Syntax.ShowModule (showModule) where

import Curry.Base.Ident
import Curry.Base.Position
import Curry.Base.Span
import Curry.Base.SpanInfo

import Curry.Syntax.Type

-- |Show a Curry module like by an devired 'Show' instance
showModule :: Show a => Module a -> String
showModule :: Module a -> String
showModule m :: Module a
m = Module a -> ShowS
forall a. Show a => Module a -> ShowS
showsModule Module a
m "\n"

showsModule :: Show a => Module a -> ShowS
showsModule :: Module a -> ShowS
showsModule (Module spi :: SpanInfo
spi li :: LayoutInfo
li ps :: [ModulePragma]
ps mident :: ModuleIdent
mident espec :: Maybe ExportSpec
espec imps :: [ImportDecl]
imps decls :: [Decl a]
decls)
  = String -> ShowS
showsString "Module "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LayoutInfo -> ShowS
showsLayoutInfo LayoutInfo
li ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ModulePragma -> ShowS) -> [ModulePragma] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList (\p :: ModulePragma
p -> ModulePragma -> ShowS
showsPragma ModulePragma
p ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
newline) [ModulePragma]
ps ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ModuleIdent -> ShowS
showsModuleIdent ModuleIdent
mident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
newline
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ExportSpec -> ShowS) -> Maybe ExportSpec -> ShowS
forall a. (a -> ShowS) -> Maybe a -> ShowS
showsMaybe ExportSpec -> ShowS
showsExportSpec Maybe ExportSpec
espec ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
newline
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ImportDecl -> ShowS) -> [ImportDecl] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList (\i :: ImportDecl
i -> ImportDecl -> ShowS
showsImportDecl ImportDecl
i ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
newline) [ImportDecl]
imps
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Decl a -> ShowS) -> [Decl a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList (\d :: Decl a
d -> Decl a -> ShowS
forall a. Show a => Decl a -> ShowS
showsDecl Decl a
d ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
newline) [Decl a]
decls

showsPragma :: ModulePragma -> ShowS
showsPragma :: ModulePragma -> ShowS
showsPragma (LanguagePragma pos :: SpanInfo
pos exts :: [Extension]
exts)
  = String -> ShowS
showsString "(LanguagePragma "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
pos ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Extension -> ShowS) -> [Extension] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Extension -> ShowS
showsExtension [Extension]
exts
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsPragma (OptionsPragma pos :: SpanInfo
pos mbTool :: Maybe Tool
mbTool args :: String
args)
  = String -> ShowS
showsString "(OptionsPragma "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
pos ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Tool -> ShowS) -> Maybe Tool -> ShowS
forall a. (a -> ShowS) -> Maybe a -> ShowS
showsMaybe Tool -> ShowS
forall a. Show a => a -> ShowS
shows Maybe Tool
mbTool
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
forall a. Show a => a -> ShowS
shows String
args
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsExtension :: Extension -> ShowS
showsExtension :: Extension -> ShowS
showsExtension (KnownExtension p :: SpanInfo
p e :: KnownExtension
e)
  = String -> ShowS
showsString "(KnownExtension "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
p ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KnownExtension -> ShowS
forall a. Show a => a -> ShowS
shows KnownExtension
e
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showString ")"
showsExtension (UnknownExtension p :: SpanInfo
p s :: String
s)
  = String -> ShowS
showsString "(UnknownExtension "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
p ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
forall a. Show a => a -> ShowS
shows String
s
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showString ")"

showsExportSpec :: ExportSpec -> ShowS
showsExportSpec :: ExportSpec -> ShowS
showsExportSpec (Exporting pos :: SpanInfo
pos exports :: [Export]
exports)
  = String -> ShowS
showsString "(Exporting "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
pos ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Export -> ShowS) -> [Export] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Export -> ShowS
showsExport [Export]
exports
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsExport :: Export -> ShowS
showsExport :: Export -> ShowS
showsExport (Export spi :: SpanInfo
spi qident :: QualIdent
qident)
  = String -> ShowS
showsString "(Export "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExport (ExportTypeWith spi :: SpanInfo
spi qident :: QualIdent
qident ids :: [Ident]
ids)
  = String -> ShowS
showsString "(ExportTypeWith "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Ident -> ShowS) -> [Ident] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Ident -> ShowS
showsIdent [Ident]
ids
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExport (ExportTypeAll spi :: SpanInfo
spi qident :: QualIdent
qident)
  = String -> ShowS
showsString "(ExportTypeAll "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExport (ExportModule spi :: SpanInfo
spi m :: ModuleIdent
m)
  = String -> ShowS
showsString "(ExportModule "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ModuleIdent -> ShowS
showsModuleIdent ModuleIdent
m
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsImportDecl :: ImportDecl -> ShowS
showsImportDecl :: ImportDecl -> ShowS
showsImportDecl (ImportDecl spi :: SpanInfo
spi mident :: ModuleIdent
mident quali :: Qualified
quali mmident :: Maybe ModuleIdent
mmident mimpspec :: Maybe ImportSpec
mimpspec)
  = String -> ShowS
showsString "(ImportDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ModuleIdent -> ShowS
showsModuleIdent ModuleIdent
mident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Qualified -> ShowS
forall a. Show a => a -> ShowS
shows Qualified
quali ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ModuleIdent -> ShowS) -> Maybe ModuleIdent -> ShowS
forall a. (a -> ShowS) -> Maybe a -> ShowS
showsMaybe ModuleIdent -> ShowS
showsModuleIdent Maybe ModuleIdent
mmident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ImportSpec -> ShowS) -> Maybe ImportSpec -> ShowS
forall a. (a -> ShowS) -> Maybe a -> ShowS
showsMaybe ImportSpec -> ShowS
showsImportSpec Maybe ImportSpec
mimpspec
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsImportSpec :: ImportSpec -> ShowS
showsImportSpec :: ImportSpec -> ShowS
showsImportSpec (Importing spi :: SpanInfo
spi imports :: [Import]
imports)
  = String -> ShowS
showsString "(Importing "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Import -> ShowS) -> [Import] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Import -> ShowS
showsImport [Import]
imports
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsImportSpec (Hiding spi :: SpanInfo
spi imports :: [Import]
imports)
  = String -> ShowS
showsString "(Hiding "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Import -> ShowS) -> [Import] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Import -> ShowS
showsImport [Import]
imports
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsImport :: Import -> ShowS
showsImport :: Import -> ShowS
showsImport (Import spi :: SpanInfo
spi ident :: Ident
ident)
  = String -> ShowS
showsString "(Import "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsImport (ImportTypeWith spi :: SpanInfo
spi ident :: Ident
ident idents :: [Ident]
idents)
  = String -> ShowS
showsString "(ImportTypeWith "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Ident -> ShowS) -> [Ident] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Ident -> ShowS
showsIdent [Ident]
idents
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsImport (ImportTypeAll spi :: SpanInfo
spi ident :: Ident
ident)
  = String -> ShowS
showsString "(ImportTypeAll "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsDecl :: Show a => Decl a -> ShowS
showsDecl :: Decl a -> ShowS
showsDecl (InfixDecl spi :: SpanInfo
spi infx :: Infix
infx prec :: Maybe Precedence
prec idents :: [Ident]
idents)
  = String -> ShowS
showsString "(InfixDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Infix -> ShowS
forall a. Show a => a -> ShowS
shows Infix
infx ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Precedence -> ShowS) -> Maybe Precedence -> ShowS
forall a. (a -> ShowS) -> Maybe a -> ShowS
showsMaybe Precedence -> ShowS
forall a. Show a => a -> ShowS
shows Maybe Precedence
prec ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Ident -> ShowS) -> [Ident] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Ident -> ShowS
showsIdent [Ident]
idents
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (DataDecl spi :: SpanInfo
spi ident :: Ident
ident idents :: [Ident]
idents consdecls :: [ConstrDecl]
consdecls classes :: [QualIdent]
classes)
  = String -> ShowS
showsString "(DataDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Ident -> ShowS) -> [Ident] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Ident -> ShowS
showsIdent [Ident]
idents ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ConstrDecl -> ShowS) -> [ConstrDecl] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList ConstrDecl -> ShowS
showsConsDecl [ConstrDecl]
consdecls ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (QualIdent -> ShowS) -> [QualIdent] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList QualIdent -> ShowS
showsQualIdent [QualIdent]
classes
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (ExternalDataDecl spi :: SpanInfo
spi ident :: Ident
ident idents :: [Ident]
idents)
  = String -> ShowS
showsString "(ExternalDataDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Ident -> ShowS) -> [Ident] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Ident -> ShowS
showsIdent [Ident]
idents
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (NewtypeDecl spi :: SpanInfo
spi ident :: Ident
ident idents :: [Ident]
idents newconsdecl :: NewConstrDecl
newconsdecl classes :: [QualIdent]
classes)
  = String -> ShowS
showsString "(NewtypeDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Ident -> ShowS) -> [Ident] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Ident -> ShowS
showsIdent [Ident]
idents ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NewConstrDecl -> ShowS
showsNewConsDecl NewConstrDecl
newconsdecl ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (QualIdent -> ShowS) -> [QualIdent] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList QualIdent -> ShowS
showsQualIdent [QualIdent]
classes
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (TypeDecl spi :: SpanInfo
spi ident :: Ident
ident idents :: [Ident]
idents typ :: TypeExpr
typ)
  = String -> ShowS
showsString "(TypeDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Ident -> ShowS) -> [Ident] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Ident -> ShowS
showsIdent [Ident]
idents ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
typ
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (TypeSig spi :: SpanInfo
spi idents :: [Ident]
idents qtype :: QualTypeExpr
qtype)
  = String -> ShowS
showsString "(TypeSig "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Ident -> ShowS) -> [Ident] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Ident -> ShowS
showsIdent [Ident]
idents ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualTypeExpr -> ShowS
showsQualTypeExpr QualTypeExpr
qtype
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (FunctionDecl spi :: SpanInfo
spi a :: a
a ident :: Ident
ident eqs :: [Equation a]
eqs)
  = String -> ShowS
showsString "(FunctionDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Equation a -> ShowS) -> [Equation a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Equation a -> ShowS
forall a. Show a => Equation a -> ShowS
showsEquation [Equation a]
eqs
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (ExternalDecl spi :: SpanInfo
spi vars :: [Var a]
vars)
  = String -> ShowS
showsString "(ExternalDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Var a -> ShowS) -> [Var a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Var a -> ShowS
forall a. Show a => Var a -> ShowS
showsVar [Var a]
vars
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (PatternDecl spi :: SpanInfo
spi cons :: Pattern a
cons rhs :: Rhs a
rhs)
  = String -> ShowS
showsString "(PatternDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Rhs a -> ShowS
forall a. Show a => Rhs a -> ShowS
showsRhs Rhs a
rhs
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (FreeDecl spi :: SpanInfo
spi vars :: [Var a]
vars)
  = String -> ShowS
showsString "(FreeDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Var a -> ShowS) -> [Var a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Var a -> ShowS
forall a. Show a => Var a -> ShowS
showsVar [Var a]
vars
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (DefaultDecl spi :: SpanInfo
spi types :: [TypeExpr]
types)
  = String -> ShowS
showsString "(DefaultDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TypeExpr -> ShowS) -> [TypeExpr] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList TypeExpr -> ShowS
showsTypeExpr [TypeExpr]
types
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (ClassDecl spi :: SpanInfo
spi li :: LayoutInfo
li context :: Context
context cls :: Ident
cls clsvar :: Ident
clsvar decls :: [Decl a]
decls)
  = String -> ShowS
showsString "(ClassDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LayoutInfo -> ShowS
showsLayoutInfo LayoutInfo
li ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Context -> ShowS
showsContext Context
context ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
cls ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
clsvar ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Decl a -> ShowS) -> [Decl a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Decl a -> ShowS
forall a. Show a => Decl a -> ShowS
showsDecl [Decl a]
decls
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsDecl (InstanceDecl spi :: SpanInfo
spi li :: LayoutInfo
li context :: Context
context qcls :: QualIdent
qcls inst :: TypeExpr
inst decls :: [Decl a]
decls)
  = String -> ShowS
showsString "(InstanceDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LayoutInfo -> ShowS
showsLayoutInfo LayoutInfo
li ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Context -> ShowS
showsContext Context
context ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qcls ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsInstanceType TypeExpr
inst ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Decl a -> ShowS) -> [Decl a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Decl a -> ShowS
forall a. Show a => Decl a -> ShowS
showsDecl [Decl a]
decls
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsContext :: Context -> ShowS
showsContext :: Context -> ShowS
showsContext = (Constraint -> ShowS) -> Context -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Constraint -> ShowS
showsConstraint

showsConstraint :: Constraint -> ShowS
showsConstraint :: Constraint -> ShowS
showsConstraint (Constraint spi :: SpanInfo
spi qcls :: QualIdent
qcls ty :: TypeExpr
ty)
  = String -> ShowS
showsString "(Constraint "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qcls ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
ty
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsInstanceType :: InstanceType -> ShowS
showsInstanceType :: TypeExpr -> ShowS
showsInstanceType = TypeExpr -> ShowS
showsTypeExpr

showsConsDecl :: ConstrDecl -> ShowS
showsConsDecl :: ConstrDecl -> ShowS
showsConsDecl (ConstrDecl spi :: SpanInfo
spi ident :: Ident
ident types :: [TypeExpr]
types)
  = String -> ShowS
showsString "(ConstrDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TypeExpr -> ShowS) -> [TypeExpr] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList TypeExpr -> ShowS
showsTypeExpr [TypeExpr]
types
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsDecl (ConOpDecl spi :: SpanInfo
spi ty1 :: TypeExpr
ty1 ident :: Ident
ident ty2 :: TypeExpr
ty2)
  = String -> ShowS
showsString "(ConOpDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
ty1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
ty2
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsDecl (RecordDecl spi :: SpanInfo
spi ident :: Ident
ident fs :: [FieldDecl]
fs)
  = String -> ShowS
showsString "(RecordDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FieldDecl -> ShowS) -> [FieldDecl] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList FieldDecl -> ShowS
showsFieldDecl [FieldDecl]
fs
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsFieldDecl :: FieldDecl -> ShowS
showsFieldDecl :: FieldDecl -> ShowS
showsFieldDecl (FieldDecl spi :: SpanInfo
spi labels :: [Ident]
labels ty :: TypeExpr
ty)
  = String -> ShowS
showsString "(FieldDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Ident -> ShowS) -> [Ident] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Ident -> ShowS
showsIdent [Ident]
labels ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
ty
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsNewConsDecl :: NewConstrDecl -> ShowS
showsNewConsDecl :: NewConstrDecl -> ShowS
showsNewConsDecl (NewConstrDecl spi :: SpanInfo
spi ident :: Ident
ident typ :: TypeExpr
typ)
  = String -> ShowS
showsString "(NewConstrDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
typ
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsNewConsDecl (NewRecordDecl spi :: SpanInfo
spi ident :: Ident
ident fld :: (Ident, TypeExpr)
fld)
  = String -> ShowS
showsString "(NewRecordDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Ident -> ShowS)
-> (TypeExpr -> ShowS) -> (Ident, TypeExpr) -> ShowS
forall a b. (a -> ShowS) -> (b -> ShowS) -> (a, b) -> ShowS
showsPair Ident -> ShowS
showsIdent TypeExpr -> ShowS
showsTypeExpr (Ident, TypeExpr)
fld
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsQualTypeExpr :: QualTypeExpr -> ShowS
showsQualTypeExpr :: QualTypeExpr -> ShowS
showsQualTypeExpr (QualTypeExpr spi :: SpanInfo
spi context :: Context
context typ :: TypeExpr
typ)
  = String -> ShowS
showsString "(QualTypeExpr "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Context -> ShowS
showsContext Context
context ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
typ
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsTypeExpr :: TypeExpr -> ShowS
showsTypeExpr :: TypeExpr -> ShowS
showsTypeExpr (ConstructorType spi :: SpanInfo
spi qident :: QualIdent
qident)
  = String -> ShowS
showsString "(ConstructorType "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsTypeExpr (ApplyType spi :: SpanInfo
spi type1 :: TypeExpr
type1 type2 :: TypeExpr
type2)
  = String -> ShowS
showsString "(ApplyType "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
type1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
type2 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsTypeExpr (VariableType spi :: SpanInfo
spi ident :: Ident
ident)
  = String -> ShowS
showsString "(VariableType "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsTypeExpr (TupleType spi :: SpanInfo
spi types :: [TypeExpr]
types)
  = String -> ShowS
showsString "(TupleType "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TypeExpr -> ShowS) -> [TypeExpr] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList TypeExpr -> ShowS
showsTypeExpr [TypeExpr]
types
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsTypeExpr (ListType spi :: SpanInfo
spi typ :: TypeExpr
typ)
  = String -> ShowS
showsString "(ListType "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
typ
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsTypeExpr (ArrowType spi :: SpanInfo
spi dom :: TypeExpr
dom ran :: TypeExpr
ran)
  = String -> ShowS
showsString "(ArrowType "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
dom ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
ran
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsTypeExpr (ParenType spi :: SpanInfo
spi ty :: TypeExpr
ty)
  = String -> ShowS
showsString "(ParenType "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
ty
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsTypeExpr (ForallType spi :: SpanInfo
spi vars :: [Ident]
vars ty :: TypeExpr
ty)
  = String -> ShowS
showsString "(ForallType "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Ident -> ShowS) -> [Ident] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Ident -> ShowS
showsIdent [Ident]
vars
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeExpr -> ShowS
showsTypeExpr TypeExpr
ty
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsEquation :: Show a => Equation a -> ShowS
showsEquation :: Equation a -> ShowS
showsEquation (Equation spi :: SpanInfo
spi lhs :: Lhs a
lhs rhs :: Rhs a
rhs)
  = String -> ShowS
showsString "(Equation "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Lhs a -> ShowS
forall a. Show a => Lhs a -> ShowS
showsLhs Lhs a
lhs ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Rhs a -> ShowS
forall a. Show a => Rhs a -> ShowS
showsRhs Rhs a
rhs
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsLhs :: Show a => Lhs a -> ShowS
showsLhs :: Lhs a -> ShowS
showsLhs (FunLhs spi :: SpanInfo
spi ident :: Ident
ident conss :: [Pattern a]
conss)
  = String -> ShowS
showsString "(FunLhs "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Pattern a -> ShowS) -> [Pattern a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm [Pattern a]
conss
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsLhs (OpLhs spi :: SpanInfo
spi cons1 :: Pattern a
cons1 ident :: Ident
ident cons2 :: Pattern a
cons2)
  = String -> ShowS
showsString "(OpLhs "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons2
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsLhs (ApLhs spi :: SpanInfo
spi lhs :: Lhs a
lhs conss :: [Pattern a]
conss)
  = String -> ShowS
showsString "(ApLhs "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Lhs a -> ShowS
forall a. Show a => Lhs a -> ShowS
showsLhs Lhs a
lhs ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Pattern a -> ShowS) -> [Pattern a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm [Pattern a]
conss
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsRhs :: Show a => Rhs a -> ShowS
showsRhs :: Rhs a -> ShowS
showsRhs (SimpleRhs spi :: SpanInfo
spi li :: LayoutInfo
li expr :: Expression a
expr decls :: [Decl a]
decls)
  = String -> ShowS
showsString "(SimpleRhs "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LayoutInfo -> ShowS
showsLayoutInfo LayoutInfo
li ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Decl a -> ShowS) -> [Decl a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Decl a -> ShowS
forall a. Show a => Decl a -> ShowS
showsDecl [Decl a]
decls
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsRhs (GuardedRhs spi :: SpanInfo
spi li :: LayoutInfo
li cexps :: [CondExpr a]
cexps decls :: [Decl a]
decls)
  = String -> ShowS
showsString "(GuardedRhs "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LayoutInfo -> ShowS
showsLayoutInfo LayoutInfo
li ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CondExpr a -> ShowS) -> [CondExpr a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList CondExpr a -> ShowS
forall a. Show a => CondExpr a -> ShowS
showsCondExpr [CondExpr a]
cexps ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Decl a -> ShowS) -> [Decl a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Decl a -> ShowS
forall a. Show a => Decl a -> ShowS
showsDecl [Decl a]
decls
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsCondExpr :: Show a => CondExpr a -> ShowS
showsCondExpr :: CondExpr a -> ShowS
showsCondExpr (CondExpr spi :: SpanInfo
spi exp1 :: Expression a
exp1 exp2 :: Expression a
exp2)
  = String -> ShowS
showsString "(CondExpr "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp2
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsLiteral :: Literal -> ShowS
showsLiteral :: Literal -> ShowS
showsLiteral (Char c :: Char
c)
  = String -> ShowS
showsString "(Char "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> ShowS
forall a. Show a => a -> ShowS
shows Char
c
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsLiteral (Int n :: Precedence
n)
  = String -> ShowS
showsString "(Int "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Precedence -> ShowS
forall a. Show a => a -> ShowS
shows Precedence
n
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsLiteral (Float x :: Double
x)
  = String -> ShowS
showsString "(Float "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> ShowS
forall a. Show a => a -> ShowS
shows Double
x
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsLiteral (String s :: String
s)
  = String -> ShowS
showsString "(String "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
forall a. Show a => a -> ShowS
shows String
s
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsConsTerm :: Show a => Pattern a -> ShowS
showsConsTerm :: Pattern a -> ShowS
showsConsTerm (LiteralPattern spi :: SpanInfo
spi a :: a
a lit :: Literal
lit)
  = String -> ShowS
showsString "(LiteralPattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Literal -> ShowS
showsLiteral Literal
lit
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (NegativePattern spi :: SpanInfo
spi a :: a
a lit :: Literal
lit)
  = String -> ShowS
showsString "(NegativePattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Literal -> ShowS
showsLiteral Literal
lit
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (VariablePattern spi :: SpanInfo
spi a :: a
a ident :: Ident
ident)
  = String -> ShowS
showsString "(VariablePattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (ConstructorPattern spi :: SpanInfo
spi a :: a
a qident :: QualIdent
qident conss :: [Pattern a]
conss)
  = String -> ShowS
showsString "(ConstructorPattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Pattern a -> ShowS) -> [Pattern a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm [Pattern a]
conss
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (InfixPattern spi :: SpanInfo
spi a :: a
a cons1 :: Pattern a
cons1 qident :: QualIdent
qident cons2 :: Pattern a
cons2)
  = String -> ShowS
showsString "(InfixPattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons2
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (ParenPattern spi :: SpanInfo
spi cons :: Pattern a
cons)
  = String -> ShowS
showsString "(ParenPattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (TuplePattern spi :: SpanInfo
spi conss :: [Pattern a]
conss)
  = String -> ShowS
showsString "(TuplePattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Pattern a -> ShowS) -> [Pattern a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm [Pattern a]
conss
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (ListPattern spi :: SpanInfo
spi a :: a
a conss :: [Pattern a]
conss)
  = String -> ShowS
showsString "(ListPattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Pattern a -> ShowS) -> [Pattern a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm [Pattern a]
conss
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (AsPattern spi :: SpanInfo
spi ident :: Ident
ident cons :: Pattern a
cons)
  = String -> ShowS
showsString "(AsPattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (LazyPattern spi :: SpanInfo
spi cons :: Pattern a
cons)
  = String -> ShowS
showsString "(LazyPattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (FunctionPattern spi :: SpanInfo
spi a :: a
a qident :: QualIdent
qident conss :: [Pattern a]
conss)
  = String -> ShowS
showsString "(FunctionPattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Pattern a -> ShowS) -> [Pattern a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm [Pattern a]
conss
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (InfixFuncPattern spi :: SpanInfo
spi a :: a
a cons1 :: Pattern a
cons1 qident :: QualIdent
qident cons2 :: Pattern a
cons2)
  = String -> ShowS
showsString "(InfixFuncPattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons2
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsConsTerm (RecordPattern spi :: SpanInfo
spi a :: a
a qident :: QualIdent
qident cfields :: [Field (Pattern a)]
cfields)
  = String -> ShowS
showsString "(RecordPattern "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Field (Pattern a) -> ShowS) -> [Field (Pattern a)] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList ((Pattern a -> ShowS) -> Field (Pattern a) -> ShowS
forall a. (a -> ShowS) -> Field a -> ShowS
showsField Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm) [Field (Pattern a)]
cfields ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsExpression :: Show a => Expression a -> ShowS
showsExpression :: Expression a -> ShowS
showsExpression (Literal spi :: SpanInfo
spi a :: a
a lit :: Literal
lit)
  = String -> ShowS
showsString "(Literal "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Literal -> ShowS
showsLiteral Literal
lit
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (Variable spi :: SpanInfo
spi a :: a
a qident :: QualIdent
qident)
  = String -> ShowS
showsString "(Variable "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (Constructor spi :: SpanInfo
spi a :: a
a qident :: QualIdent
qident)
  = String -> ShowS
showsString "(Constructor "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (Paren spi :: SpanInfo
spi expr :: Expression a
expr)
  = String -> ShowS
showsString "(Paren "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (Typed spi :: SpanInfo
spi expr :: Expression a
expr qtype :: QualTypeExpr
qtype)
  = String -> ShowS
showsString "(Typed "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualTypeExpr -> ShowS
showsQualTypeExpr QualTypeExpr
qtype
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (Tuple spi :: SpanInfo
spi exps :: [Expression a]
exps)
  = String -> ShowS
showsString "(Tuple "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Expression a -> ShowS) -> [Expression a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression [Expression a]
exps
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (List spi :: SpanInfo
spi a :: a
a exps :: [Expression a]
exps)
  = String -> ShowS
showsString "(List "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Expression a -> ShowS) -> [Expression a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression [Expression a]
exps
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (ListCompr spi :: SpanInfo
spi expr :: Expression a
expr stmts :: [Statement a]
stmts)
  = String -> ShowS
showsString "(ListCompr "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Statement a -> ShowS) -> [Statement a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Statement a -> ShowS
forall a. Show a => Statement a -> ShowS
showsStatement [Statement a]
stmts
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (EnumFrom spi :: SpanInfo
spi expr :: Expression a
expr)
  = String -> ShowS
showsString "(EnumFrom "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (EnumFromThen spi :: SpanInfo
spi exp1 :: Expression a
exp1 exp2 :: Expression a
exp2)
  = String -> ShowS
showsString "(EnumFromThen "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp2
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (EnumFromTo spi :: SpanInfo
spi exp1 :: Expression a
exp1 exp2 :: Expression a
exp2)
  = String -> ShowS
showsString "(EnumFromTo "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp2
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (EnumFromThenTo spi :: SpanInfo
spi exp1 :: Expression a
exp1 exp2 :: Expression a
exp2 exp3 :: Expression a
exp3)
  = String -> ShowS
showsString "(EnumFromThenTo "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp2 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp3
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (UnaryMinus spi :: SpanInfo
spi expr :: Expression a
expr)
  = String -> ShowS
showsString "(UnaryMinus "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (Apply spi :: SpanInfo
spi exp1 :: Expression a
exp1 exp2 :: Expression a
exp2)
  = String -> ShowS
showsString "(Apply "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp2
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (InfixApply spi :: SpanInfo
spi exp1 :: Expression a
exp1 op :: InfixOp a
op exp2 :: Expression a
exp2)
  = String -> ShowS
showsString "(InfixApply "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. InfixOp a -> ShowS
forall a. Show a => InfixOp a -> ShowS
showsInfixOp InfixOp a
op ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp2
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (LeftSection spi :: SpanInfo
spi expr :: Expression a
expr op :: InfixOp a
op)
  = String -> ShowS
showsString "(LeftSection "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. InfixOp a -> ShowS
forall a. Show a => InfixOp a -> ShowS
showsInfixOp InfixOp a
op
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (RightSection spi :: SpanInfo
spi op :: InfixOp a
op expr :: Expression a
expr)
  = String -> ShowS
showsString "(RightSection "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. InfixOp a -> ShowS
forall a. Show a => InfixOp a -> ShowS
showsInfixOp InfixOp a
op ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (Lambda spi :: SpanInfo
spi conss :: [Pattern a]
conss expr :: Expression a
expr)
  = String -> ShowS
showsString "(Lambda "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Pattern a -> ShowS) -> [Pattern a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm [Pattern a]
conss ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (Let spi :: SpanInfo
spi li :: LayoutInfo
li decls :: [Decl a]
decls expr :: Expression a
expr)
  = String -> ShowS
showsString "(Let "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LayoutInfo -> ShowS
showsLayoutInfo LayoutInfo
li ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Decl a -> ShowS) -> [Decl a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Decl a -> ShowS
forall a. Show a => Decl a -> ShowS
showsDecl [Decl a]
decls ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (Do spi :: SpanInfo
spi li :: LayoutInfo
li stmts :: [Statement a]
stmts expr :: Expression a
expr)
  = String -> ShowS
showsString "(Do "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LayoutInfo -> ShowS
showsLayoutInfo LayoutInfo
li ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Statement a -> ShowS) -> [Statement a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Statement a -> ShowS
forall a. Show a => Statement a -> ShowS
showsStatement [Statement a]
stmts ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (IfThenElse spi :: SpanInfo
spi exp1 :: Expression a
exp1 exp2 :: Expression a
exp2 exp3 :: Expression a
exp3)
  = String -> ShowS
showsString "(IfThenElse "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp1 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp2 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
exp3
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (Case spi :: SpanInfo
spi li :: LayoutInfo
li ct :: CaseType
ct expr :: Expression a
expr alts :: [Alt a]
alts)
  = String -> ShowS
showsString "(Case "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LayoutInfo -> ShowS
showsLayoutInfo LayoutInfo
li ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CaseType -> ShowS
showsCaseType CaseType
ct ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Alt a -> ShowS) -> [Alt a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Alt a -> ShowS
forall a. Show a => Alt a -> ShowS
showsAlt [Alt a]
alts
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (RecordUpdate spi :: SpanInfo
spi expr :: Expression a
expr efields :: [Field (Expression a)]
efields)
  = String -> ShowS
showsString "(RecordUpdate "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Field (Expression a) -> ShowS) -> [Field (Expression a)] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList ((Expression a -> ShowS) -> Field (Expression a) -> ShowS
forall a. (a -> ShowS) -> Field a -> ShowS
showsField Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression) [Field (Expression a)]
efields
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsExpression (Record spi :: SpanInfo
spi a :: a
a qident :: QualIdent
qident efields :: [Field (Expression a)]
efields)
  = String -> ShowS
showsString "(Record "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Field (Expression a) -> ShowS) -> [Field (Expression a)] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList ((Expression a -> ShowS) -> Field (Expression a) -> ShowS
forall a. (a -> ShowS) -> Field a -> ShowS
showsField Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression) [Field (Expression a)]
efields
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsInfixOp :: Show a => InfixOp a -> ShowS
showsInfixOp :: InfixOp a -> ShowS
showsInfixOp (InfixOp a :: a
a qident :: QualIdent
qident)
  = String -> ShowS
showsString "(InfixOp "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsInfixOp (InfixConstr a :: a
a qident :: QualIdent
qident)
  = String -> ShowS
showsString "(InfixConstr "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
qident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsStatement :: Show a => Statement a -> ShowS
showsStatement :: Statement a -> ShowS
showsStatement (StmtExpr spi :: SpanInfo
spi expr :: Expression a
expr)
  = String -> ShowS
showsString "(StmtExpr "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsStatement (StmtDecl spi :: SpanInfo
spi li :: LayoutInfo
li decls :: [Decl a]
decls)
  = String -> ShowS
showsString "(StmtDecl "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LayoutInfo -> ShowS
showsLayoutInfo LayoutInfo
li ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Decl a -> ShowS) -> [Decl a] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Decl a -> ShowS
forall a. Show a => Decl a -> ShowS
showsDecl [Decl a]
decls
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"
showsStatement (StmtBind spi :: SpanInfo
spi cons :: Pattern a
cons expr :: Expression a
expr)
  = String -> ShowS
showsString "(StmtBind "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expression a -> ShowS
forall a. Show a => Expression a -> ShowS
showsExpression Expression a
expr
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsCaseType :: CaseType -> ShowS
showsCaseType :: CaseType -> ShowS
showsCaseType Rigid = String -> ShowS
showsString "Rigid"
showsCaseType Flex  = String -> ShowS
showsString "Flex"

showsAlt :: Show a => Alt a -> ShowS
showsAlt :: Alt a -> ShowS
showsAlt (Alt spi :: SpanInfo
spi cons :: Pattern a
cons rhs :: Rhs a
rhs)
  = String -> ShowS
showsString "(Alt "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern a -> ShowS
forall a. Show a => Pattern a -> ShowS
showsConsTerm Pattern a
cons ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Rhs a -> ShowS
forall a. Show a => Rhs a -> ShowS
showsRhs Rhs a
rhs
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsField :: (a -> ShowS) -> Field a -> ShowS
showsField :: (a -> ShowS) -> Field a -> ShowS
showsField sa :: a -> ShowS
sa (Field spi :: SpanInfo
spi ident :: QualIdent
ident a :: a
a)
  = String -> ShowS
showsString "(Field "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QualIdent -> ShowS
showsQualIdent QualIdent
ident ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> ShowS
sa a
a
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsVar :: Show a => Var a -> ShowS
showsVar :: Var a -> ShowS
showsVar (Var a :: a
a ident :: Ident
ident)
  = String -> ShowS
showsString "(Var "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsPosition :: Position -> ShowS
showsPosition :: Position -> ShowS
showsPosition NoPos = String -> ShowS
showsString "NoPos"
showsPosition Position { line :: Position -> Int
line = Int
l, column :: Position -> Int
column = Int
c }
   = String -> ShowS
showsString "(Position "
   ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> ShowS
forall a. Show a => a -> ShowS
shows Int
l ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
   ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> ShowS
forall a. Show a => a -> ShowS
shows Int
c
   ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsSpanInfo :: SpanInfo -> ShowS
showsSpanInfo :: SpanInfo -> ShowS
showsSpanInfo NoSpanInfo = String -> ShowS
showsString "NoSpanInfo"
showsSpanInfo SpanInfo { srcSpan :: SpanInfo -> Span
srcSpan = Span
sp, srcInfoPoints :: SpanInfo -> [Span]
srcInfoPoints = [Span]
ss }
  = String -> ShowS
showsString "(SpanInfo "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Span -> ShowS
showsSpan Span
sp ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Span -> ShowS) -> [Span] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Span -> ShowS
showsSpan [Span]
ss
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsLayoutInfo :: LayoutInfo -> ShowS
showsLayoutInfo :: LayoutInfo -> ShowS
showsLayoutInfo WhitespaceLayout = String -> ShowS
showsString "WhitespaceLayout"
showsLayoutInfo (ExplicitLayout ss :: [Span]
ss)
  = String -> ShowS
showsString "(ExplicitLayout "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Span -> ShowS) -> [Span] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList Span -> ShowS
showsSpan [Span]
ss
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsSpan :: Span -> ShowS
showsSpan :: Span -> ShowS
showsSpan NoSpan = String -> ShowS
showsString "NoSpan"
showsSpan Span { start :: Span -> Position
start = Position
s, end :: Span -> Position
end = Position
e }
  = String -> ShowS
showsString "(Span "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Position -> ShowS
showsPosition Position
s ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Position -> ShowS
showsPosition Position
e
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsString :: String -> ShowS
showsString :: String -> ShowS
showsString = String -> ShowS
forall a. [a] -> [a] -> [a]
(++)

space :: ShowS
space :: ShowS
space = String -> ShowS
showsString " "

newline :: ShowS
newline :: ShowS
newline = String -> ShowS
showsString "\n"

showsMaybe :: (a -> ShowS) -> Maybe a -> ShowS
showsMaybe :: (a -> ShowS) -> Maybe a -> ShowS
showsMaybe shs :: a -> ShowS
shs = ShowS -> (a -> ShowS) -> Maybe a -> ShowS
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (String -> ShowS
showsString "Nothing")
                       (\x :: a
x -> String -> ShowS
showsString "(Just " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> ShowS
shs a
x ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")")

showsList :: (a -> ShowS) -> [a] -> ShowS
showsList :: (a -> ShowS) -> [a] -> ShowS
showsList _   [] = String -> ShowS
showsString "[]"
showsList shs :: a -> ShowS
shs (x :: a
x:xs :: [a]
xs)
  = String -> ShowS
showsString "["
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ShowS -> a -> ShowS) -> ShowS -> [a] -> ShowS
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl (\sys :: ShowS
sys y :: a
y -> ShowS
sys ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString "," ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> ShowS
shs a
y) (a -> ShowS
shs a
x) [a]
xs
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString "]"

showsPair :: (a -> ShowS) -> (b -> ShowS) -> (a,b) -> ShowS
showsPair :: (a -> ShowS) -> (b -> ShowS) -> (a, b) -> ShowS
showsPair sa :: a -> ShowS
sa sb :: b -> ShowS
sb (a :: a
a,b :: b
b)
  = String -> ShowS
showsString "(" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> ShowS
sa a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString "," ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. b -> ShowS
sb b
b ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsIdent :: Ident -> ShowS
showsIdent :: Ident -> ShowS
showsIdent (Ident spi :: SpanInfo
spi x :: String
x n :: Precedence
n)
  = String -> ShowS
showsString "(Ident " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
forall a. Show a => a -> ShowS
shows String
x ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Precedence -> ShowS
forall a. Show a => a -> ShowS
shows Precedence
n ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsQualIdent :: QualIdent -> ShowS
showsQualIdent :: QualIdent -> ShowS
showsQualIdent (QualIdent spi :: SpanInfo
spi mident :: Maybe ModuleIdent
mident ident :: Ident
ident)
  = String -> ShowS
showsString "(QualIdent "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ModuleIdent -> ShowS) -> Maybe ModuleIdent -> ShowS
forall a. (a -> ShowS) -> Maybe a -> ShowS
showsMaybe ModuleIdent -> ShowS
showsModuleIdent Maybe ModuleIdent
mident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ident -> ShowS
showsIdent Ident
ident
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsModuleIdent :: ModuleIdent -> ShowS
showsModuleIdent :: ModuleIdent -> ShowS
showsModuleIdent (ModuleIdent spi :: SpanInfo
spi ss :: [String]
ss)
  = String -> ShowS
showsString "(ModuleIdent "
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpanInfo -> ShowS
showsSpanInfo SpanInfo
spi ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
space
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String -> ShowS) -> [String] -> ShowS
forall a. (a -> ShowS) -> [a] -> ShowS
showsList ((String -> ShowS) -> String -> ShowS
forall a. (a -> ShowS) -> a -> ShowS
showsQuotes String -> ShowS
showsString) [String]
ss
  ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString ")"

showsQuotes :: (a -> ShowS) -> a -> ShowS
showsQuotes :: (a -> ShowS) -> a -> ShowS
showsQuotes sa :: a -> ShowS
sa a :: a
a
  = String -> ShowS
showsString "\"" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> ShowS
sa a
a ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showsString "\""