function_def :: String -> String -> String
function_def prev name = "int " ++ name ++ "_entry()\n{\n\tint d = " ++ prev ++
                        "_entry();\n\tprintf(\"prev = %d\\n\", d);" ++
                        "\n\tint *p = (int*) (&" ++ name ++ "_entry) - 1;\n\treturn *p;\n}"
function_def :: String -> String -> String
function_def prev name = "int " ++ name ++ "_entry()\n{\n\tint d = " ++ prev ++
                        "_entry();\n\tprintf(\"prev = %d\\n\", d);" ++
                        "\n\tint *p = (int*) (&" ++ name ++ "_entry) - 1;\n\treturn *p;\n}"
function_def prev name = "int " ++ name ++ "_entry()\n{\n\tint d = " ++ prev ++
                        "_entry();\n\tprintf(\"prev = %d\\n\", d);" ++
                        "\n\tint *p = (int*) (&" ++ name ++ "_entry) - 1;\n\treturn *p;\n}"