1. For the following RPAL program: let (x, y = 1, 1 within Q (r,s) = (s le 1) & (r eq 2) -> r - s | s * r) and f x y = x aug y in nil @ f (Q (1,2)) Draw the AST. 2. Write a complete RPAL program and test it using the RPAL interpreter, for the "merge" function. The merge function takes two lists of numbers in increasing order and merges them into one list of numbers in incresasing order. For example, merge((1,3,4,7),(2,4,6,7,8)) = (1,2,3,4,4,6,7,7,8). 3. Write, test, and debug an RPAL program that computes the "tuple reverse" function, i.e. Rev(3,'hello',(2,3),true) = (true,(2,3),'hello',3). 4. Consider "tiny", which implements the semantics of the Tiny programming language in RPAL. Add the following constructs to Tiny: a) The binary subtraction operatior "-", b) The binary multiplication operator "*", c) The boolean "or" operation, d) The "for" loop statment (with semantics from C).