Answered step by step
Verified Expert Solution
Question
1 Approved Answer
datatype: data LamExpr = LamApp LamExpr LamExpr | LamAbs Int LamExpr | LamVar Int deriving (Show,Eq,Read) define a function: prettyPrint :: LamExpr -> String that
datatype: data LamExpr = LamApp LamExpr LamExpr | LamAbs Int LamExpr | LamVar Int deriving (Show,Eq,Read)
define a function: prettyPrint :: LamExpr -> String
that converts a lambda expression to an equivalent expression in Alpha-Normal Form.
Example results wanted:
prettyPrint (LamAbs 1 (LamAbs 1 (LamApp (LamVar 1) (LamAbs 1 (LamAbs 2 (LamVar 1)))))) = "\\x0 -> \\x0 -> x0 \\x0 -> \\x1 -> x0 "
prettyPrint (LamApp (LamAbs 1 (LamVar 1)) (LamAbs 1 (LamVar 1))) = "(\\x0 -> x0) \\x0 -> x0"
Haskell code as answer plz
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started