Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Consider the following Haskell datatypes representing sugared and unsugared calculus terms. data PureLC = Lambda String PureLC | App PureLC PureLC | Var String deriving
Consider the following Haskell datatypes representing sugared and unsugared calculus terms. data PureLC = Lambda String PureLC | App PureLC PureLC | Var String deriving Show data SugaredLC = LambdaS [String] SugaredLC | AppS [SugaredLC] | VarS String deriving Show Write fv::PureLC[String]desugar::SugaredLCPureLC which finds a list of the free variables in a pure calculus term, and de-sugars a sugared calculus term, respectively. So for example Prelude> desugar (LambdaS ["f", "x"] (AppS [(VarS "f"), AppS [Vars "t", Vars "g", Vars "g"]])) Lambda "f" (Lambda "x" (App (Var "f") (App (App (Var "t") (Var "g")) (Var "g"))))) Prelude>fv (Lambda "f" (Lambda "x" (App (Var "f") (App (App (Var "t") (Var "g")) (Var "g"))))) [ "t","g"]
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