Question: Consider the following Haskell datatype definitions for representing simple lambda calculus terms. data Term = Var String | Application Term Term | Lambda String Term

Consider the following Haskell datatype definitions for representing simple lambda calculus terms. data Term = Var String | Application Term Term | Lambda String Term

Define the following utility functions

a) normalForm :: Term -> Bool, checks if a term is in normal form, meaning it contains no application (no matter how deeply embedded) whose left hand side is a lambda expression

. b) listOVars :: [String], an infinite list of distinct variables that can be used if you want to find a fresh variable.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!