Blame


1 12687dd9 2023-08-04 jrmu ;; The first three lines of this file were inserted by DrScheme. They record metadata
2 12687dd9 2023-08-04 jrmu ;; about the language level of this file in a form that our tools can easily process.
3 12687dd9 2023-08-04 jrmu #reader(lib "htdp-intermediate-reader.ss" "lang")((modname |22.2|) (read-case-sensitive #t) (teachpacks ((lib "draw.ss" "teachpack" "htdp") (lib "arrow.ss" "teachpack" "htdp"))) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ((lib "draw.ss" "teachpack" "htdp") (lib "arrow.ss" "teachpack" "htdp")))))
4 12687dd9 2023-08-04 jrmu ;Exercise 22.2.1. Define an abstraction of the functions convertCF and names from section 21.1 using the new recipe for abstraction. Solution
5 12687dd9 2023-08-04 jrmu
6 12687dd9 2023-08-04 jrmu (define-struct ir (name price))
7 12687dd9 2023-08-04 jrmu
8 12687dd9 2023-08-04 jrmu ;An inventory record (ir) is a structure
9 12687dd9 2023-08-04 jrmu ;(make-ir name price)
10 12687dd9 2023-08-04 jrmu
11 12687dd9 2023-08-04 jrmu #|
12 12687dd9 2023-08-04 jrmu
13 12687dd9 2023-08-04 jrmu ;; convertCF : lon -> lon
14 12687dd9 2023-08-04 jrmu (define (convertCF alon)
15 12687dd9 2023-08-04 jrmu (cond
16 12687dd9 2023-08-04 jrmu [(empty? alon) empty]
17 12687dd9 2023-08-04 jrmu [else
18 12687dd9 2023-08-04 jrmu (cons (operator (first alon))
19 12687dd9 2023-08-04 jrmu (convertCF (rest alon)))]))
20 12687dd9 2023-08-04 jrmu
21 12687dd9 2023-08-04 jrmu ;; names : (listof ir) -> los
22 12687dd9 2023-08-04 jrmu (define (names aloir)
23 12687dd9 2023-08-04 jrmu (cond
24 12687dd9 2023-08-04 jrmu [(empty? aloir) empty]
25 12687dd9 2023-08-04 jrmu [else
26 12687dd9 2023-08-04 jrmu (cons (operator (first aloir))
27 12687dd9 2023-08-04 jrmu (names (rest aloir)))]))
28 12687dd9 2023-08-04 jrmu
29 12687dd9 2023-08-04 jrmu |#
30 12687dd9 2023-08-04 jrmu
31 12687dd9 2023-08-04 jrmu ;abs-func : (X -> Y) -> ((listof X) -> (listof Y))
32 12687dd9 2023-08-04 jrmu (define (abs-map operator)
33 12687dd9 2023-08-04 jrmu (local ((define (map alox)
34 12687dd9 2023-08-04 jrmu (cond
35 12687dd9 2023-08-04 jrmu [(empty? alox) empty]
36 12687dd9 2023-08-04 jrmu [else (cons (operator (first alox))
37 12687dd9 2023-08-04 jrmu (map (rest alox)))])))
38 12687dd9 2023-08-04 jrmu map))
39 12687dd9 2023-08-04 jrmu
40 12687dd9 2023-08-04 jrmu ;C->F : number -> number
41 12687dd9 2023-08-04 jrmu (define (C->F temp)
42 12687dd9 2023-08-04 jrmu (+ (* 9/5 temp) 32))
43 12687dd9 2023-08-04 jrmu
44 12687dd9 2023-08-04 jrmu (define convertCF (abs-map C->F))
45 12687dd9 2023-08-04 jrmu (define names (abs-map ir-name))
46 12687dd9 2023-08-04 jrmu
47 12687dd9 2023-08-04 jrmu (define listofir (list (make-ir 'Pencil 0.40)
48 12687dd9 2023-08-04 jrmu (make-ir 'Eraser 1.99)
49 12687dd9 2023-08-04 jrmu (make-ir 'Pen 1.25)
50 12687dd9 2023-08-04 jrmu (make-ir 'PaperClip 0.05)
51 12687dd9 2023-08-04 jrmu (make-ir 'Highlighter 4.50)))