Exercises
Exercise 3.1. [*] Take a look at this function definition:
| Use the language
level Intermediate Student |
;; Number → Number
;; compute the after-tax weekly wage from the hours someone worked
;; pay-per-hour: $12.55
;; tax rate: 15%
;; social security: 5.5%
;; insurance cost: $100
(define (after-tax-income hours)
(- ; gross income:
(* hours 12.55)
; taxes:
(* (* hours 12.55) .15)
; social security:
(* (* hours 12.55) .055)
; insurance
100))
;; example/test:
(= (after-tax-income 40) 299.09)
Use local to simplify the function body (“go slow!”).
Exercise 3.2. [*]
Developing the program strings-to-numbers* in
exercise 1.2 required the definition of several
functions. It is good practice to reorganize programs such as those with
local into a single function definition.
Exercise 3.3.
Develop the program numeric-matrix?. The function consumes a
string matrix. It produces true if all strings represent a
number; otherwise its return value is false.
Here are the data definitions:
;; AMatrixis one of: ;; ---empty;; ---(cons LOS Matrix);; Constraint: In a matrix, the length of allLOSis the same. ;; ALOSis one of: ;; ---empty;; ---(cons String LON)
Hint: The program requires several function definitions.
Constraint: Develop the program in two stages. First design all functions
at the top-level. Second organize them using local so that there
is only one top-level function.
Exercise 3.4.
Design make-spread. The function consumes two natural
numbers: n and m. Its result is a rectangular list:
rectangle
S-expression such as this:
(list (list (list 'td "cell00") (list 'td "cell01")) (list (list 'td "cell10") (list 'td "cell11")) (list (list 'td "cell20") (list 'td "cell21")) (list (list 'td "cell30") (list 'td "cell31")))
with 4 rows and 2 columns.
Hint: Use the function string-append, which performs the obvious
operation on strings.
Use the function to develop the function make-table, which
consumes two natural numbers and creates the following S-expression for
n = 3 and m = 2:
(list 'table (list 'tr (list 'td "cell00") (list 'td "cell01")) (list 'tr (list 'td "cell10") (list 'td "cell11")) (list 'tr (list 'td "cell20") (list 'td "cell21")))
| Add the
teachpack servlet2.ss |
inform/html (from the teachpack) to display the result of the
function in a browser.