renderNamedFunction :: NamedFunction Expr -> Serialized
renderNamedFunction NamedFunction{functionName = name, namedFunctionFunction = Function{..}} =
  vsep
    [ hsep $ rname : "::" : intersperse "->" (map (const "Int") parameters ++ ["IO ()"])
    , hsep $ rname : rparams ++ ["=", renderExpr functionBody]
    ]
  where
    rparams = map pretty parameters
    rname = pretty name
    mkSig = intersperse "->" . map (const $ "Int")
renderNamedFunction :: NamedFunction Expr -> Serialized
renderNamedFunction NamedFunction{functionName = name, namedFunctionFunction = Function{..}} =
  vsep
    [ hsep $ rname : "::" : intersperse "->" (map (const "Int") parameters ++ ["IO ()"])
    , hsep $ rname : rparams ++ ["=", renderExpr functionBody]
    ]
  where
    rparams = map pretty parameters
    rname = pretty name
    mkSig = intersperse "->" . map (const $ "Int")
renderNamedFunction NamedFunction{functionName = name, namedFunctionFunction = Function{..}} =
  vsep
    [ hsep $ rname : "::" : intersperse "->" (map (const "Int") parameters ++ ["IO ()"])
    , hsep $ rname : rparams ++ ["=", renderExpr functionBody]
    ]
  where
    rparams = map pretty parameters
    rname = pretty name
    mkSig = intersperse "->" . map (const $ "Int")