Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Please Answer thoroughly :) Consider the following Haskell datatypes representing sugared and unsugared calculus terms. data PureLC = Lambda String PureLC | App PureLC PureLC
Please Answer thoroughly :)
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 :: SugaredLC PureLC 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