Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Consider the following syntax for a term in the unsugared untyped calculus, represented as an s-expression: E ::= ( V E) | (E E) |

Consider the following syntax for a term in the "unsugared" untyped calculus, represented as an s-expression:

E ::= ( V E) | (E E) | V

where V is a variable. For example, the term fx.f(tgg) would be de-sugared to f.x.f((tg)g) and then represented as the s-expression ( f ( x (f ((t g) g)))). Write a scheme function fv which takes an s-expression of this sort, and returns a list of the free variables. E.g.,

(fv '( f ( x (f ((t g) g)))))  (t g)

or (g t). Hint: you may want to write a function to take the union of two sets represented as lists of elements, and a function to remove a given element from a set.

Bonus: Consider representing a sugared calculus term as an s-expression, with the syntax

S ::= ( (V+) S) | (S+) | V

where + mean "one or more". So for example fx.f(tgg) would be represented as the s-expression ( (f x) (f (t g g))). Write desugar which takes an s-expression representing a sugared calculus term and returns an s-expression representing the equivalent unsugared term. For example

(desugar '( (f x) (f (t g g))))  ( f ( x (f ((t g) g))))

image text in transcribed

Consider the following syntax for a term in the "unsugared" untyped calculus, represented as an s-expression: E::=(E)(EE) where v is a variable. For example, the term fx.f(tgg) would be de-sugared to f.x.f((tg)g) and then represented as the s-expression ( f((f((tg)g))). Write a scheme function fv which takes an s-expression of this sort, and returns a list of the free variables. E.g., (fv(f((f((tg)g)))))(tg) or ( gt). Hint: you may want to write a function to take the union of two sets represented as lists of elements, and a function to remove a given element from a set. Bonus: Consider representing a sugared calculus term as an s-expression, with the syntax s::=((v+)s)(s+)v where mean "one or more". So for example ffx.f(tgg) would be represented as the s-expression ((fx)(f(tgg))). Write sugared calculus term and returns an s-expression representing the equivalent unsugared term. For example (desugar((fx)(f(tgg)))))(f(x(f((tg)g))))

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions