====Objective:====
Learn the basics of the Racket Language and functional programming in general.
----
====Preparation:====
Download the latest version of DrRacket from [[http://racket-lang.org]] and install it on your computer. Versions are available for Windows, Mac OS X, and Linux.
Please also take a look at [[cs330_f2016:turnin|how to turn in your assignments]].
----
====Deliverables:====
For this lab, you will need to implement the following functions and data structures in Racket:
* ''sum-coins''
* ''degrees-to-radians''
* ''sign''
* ''new-sin''
=== sum-coins ===
(define (sum-coins pennies nickels dimes quarters) ...)
where ''pennies'', ''nickels'', ''dimes'', and ''quarters'' are all non-negative numbers and the value returned is the total value of the coins in cents.
=== degrees-to-radians ===
(define (degrees-to-radians angle) ...)
where ''angle'' is a number representing a value represented in degrees and the value returned is the equivalent representation in radians. (For those who have forgotten their trig: radians = degrees / 180 * PI.)
=== sign ===
(define (sign x) ...)
where ''x'' is a number and the value returned is -1, 0, or 1 depending on whether ''x'' is negative, zero, or positive respectively.
=== new-sin ===
(define (new-sin angle type) ...)
where ''angle'' is a number representing either degrees or radians, type is either '''degrees'' or '''radians'' (a symbol) indicating how ''angle'' is represented, and the value returned is the sin of ''angle''.
Hint: use ''symbol=?'' to test for symbol equality: ''(symbol=? x 'degrees)''.
----
====Notes:====
You **do not** need to bulletproof the code to enforce proper inputs.
Your code only needs to return correct values given correct inputs.
----
====Hints:====
Try clicking on the Step button to walk through your code and watch the equivalent sequence of substitutions that are performed.