define-syntax-rule and miscellaneous items
Extension C, like previous Extensions, 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 next required section you complete.
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.
Implementing syntax rules can be quite difficult. You may wish to pursue other Extensions before attempting this one. You should play around with syntax rules in DrRacket for a bit to see if you can figure out what is going on with them. Here are a few of the most basic things you need to know about them:
(define-syntax-rule (rule-name arg0 arg1 ...) expression )
If you can't get any of the other major Extension pieces to work properly, you can try some smaller things for partial-extra-credit:
; Allows the function to take 1 or more arguments (define f (lambda (first . list-of-optional-arguments) '...))or
; Allows the function to take 0 or more arguments (define f (lambda list-of-optional-arguments '...))
(define f (lambda (n) (+ n 1))) (define (f n) (+ n 1))