CurryInfo: verify-non-fail-2.0.0 / FlatCurry.Print

classes:

              
documentation:
------------------------------------------------------------------------------
--- Auxiliaries for printing FlatCurry entities.
---
--- @author Michael Hanus
--- @version January 2024
------------------------------------------------------------------------------
name:
FlatCurry.Print
operations:
ppExp ppTypeExp showBindExp showExp showFlatProg showFuncDecl showFuncDeclAsLambda showTypeExp
sourcecode:
module FlatCurry.Print
 where

import FlatCurry.Goodies
import FlatCurry.Pretty as FCP
import FlatCurry.Types
import Text.Pretty                ( Doc, (<+>), align, pPrint, text )

--- Shows a pretty-printed FlatCurry program.
showFlatProg :: Prog -> String
showFlatProg = pPrint . ppProg defaultOptions { qualMode = QualNone}

--- Shows a pretty-printed FlatCurry expression.
showTypeExp :: TypeExpr -> String
showTypeExp = pPrint . ppTypeExp

--- Pretty prints a FlatCurry expression.
ppTypeExp :: TypeExpr -> Doc
ppTypeExp = FCP.ppTypeExp defaultOptions { qualMode = QualNone}

--- Shows a pretty-printed variable binding to a FlatCurry expression.
showBindExp :: Int -> Expr -> String
showBindExp bv e = pPrint $ text ('v' : show bv ++ " |-> ") <+> align (ppExp e)

--- Shows a pretty-printed FlatCurry expression.
showExp :: Expr -> String
showExp = pPrint . ppExp

--- Pretty prints a FlatCurry expression.
ppExp :: Expr -> Doc
ppExp = FCP.ppExp defaultOptions { qualMode = QualNone}

--- Pretty prints a FlatCurry function.
showFuncDecl :: FuncDecl -> String
showFuncDecl =
  pPrint . ppFuncDecl defaultOptions { qualMode = QualNone}

--- Pretty prints a FlatCurry function as a lambda expression.
showFuncDeclAsLambda :: FuncDecl -> String
showFuncDeclAsLambda fdecl =
  let rule = funcRule fdecl
  in '\\' : unwords (map (\i -> 'v' : show i) (ruleArgs rule)) ++
     " -> " ++ showExp (ruleBody rule)

------------------------------------------------------------------------------
types:

              
unsafe:
safe