Extension A, like other extensions which will be provided, serves three purposes. The extensions will...
You may attempt to complete the Extensions at any point during the project. You do not need to attempt them after a specific required portion of the project. In addition, you should not run handin37 separately to hand in an extension: simply hand in the extension along with the whatever section you are handing in.
Finally, since these extensions are considered "advanced" features, you will receive far less guidance in completing them than you will receive for the required portions of the project. This does not mean that you cannot ask questions; rather, I will provide less information to you up front, forcing you to work out details on your own.
It is largely up to you to work out the details in this section, and to test it thoroughly. You should find portions of the code here look similar to the work you have already done.
Here are a few brief details about quasiquote and unquote:
Here are some interactions in Racket:
> (define a 3) > (define b 4) > ,a ; rule 3 unquote: not in quasiquote in: (unquote b) > '(+ a b) (+ a b) > `(+ a b) ; rule 4 (+ a b) > `(+ ,a ,b) ; rule 5 (+ 3 4) > `(+ `(+ ,a ,b) ,b) ; rule 6 (+ `(+ ,a ,b) 4) > `,`,`,a 3Be sure you try other combinations to make sure you understand how quasiquote and unquote work.