CS G262 Assignment #1. Assigned: Thursday, 9 September 2004 Due: Thursday, 16 September 2004, by 6:30pm Implement the Qtype and Tenv ADTs that are specified below. Your code must be written in portable (R5RS) Scheme. The instructor is providing temporary implementations of the VOID variable and of the Qsymbol ADT that are mentioned by the specification of the Qtype and Tenv ADTs. This code is in /course/csg262/Assignments/Assignment1/qsymbol.sch. Your code should also work with any other correct implementation of VOID and Qsymbol. Submit this assignment as a printed listing of your commented code. Please print the listing using a fixed width font for Scheme code. **************** Specification of the Qtype and Tenv ADTs. Both Qtype and Tenv are immutable ADTs. Signature: var: T -> Qtype type: T -> Qtype isVar?: Qtype -> boolean isType?: Qtype -> boolean untagged: Qtype -> T empty: -> Tenv extend: Tenv x Qsymbol x Qtype -> Tenv lookup: Tenv x Qsymbol -> Qtype Algebraic specification: (isVar? (var t)) = true (isVar? (type t)) = false (isType? (var t)) = false (isType? (type t)) = true (untagged (var t)) = t (untagged (type t)) = t (lookup (empty) I) = type(VOID) (lookup (extend env I1 qt) I0) = qt if (Qsymbol.equals I1 I0) (lookup (extend env I1 qt) I0) = (lookup env I0) otherwise ****************************************************************