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 20.1.1) (read-case-sensitive #t) (teachpacks ((lib "draw.ss" "teachpack" "htdp"))) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ((lib "draw.ss" "teachpack" "htdp")))))
4 12687dd9 2023-08-04 jrmu #|
5 12687dd9 2023-08-04 jrmu
6 12687dd9 2023-08-04 jrmu (define (f x) x)
7 12687dd9 2023-08-04 jrmu
8 12687dd9 2023-08-04 jrmu (cons f empty)
9 12687dd9 2023-08-04 jrmu
10 12687dd9 2023-08-04 jrmu (f f)
11 12687dd9 2023-08-04 jrmu
12 12687dd9 2023-08-04 jrmu (cons f (cons 10 (cons (f 10) empty)))
13 12687dd9 2023-08-04 jrmu
14 12687dd9 2023-08-04 jrmu |#
15 12687dd9 2023-08-04 jrmu
16 12687dd9 2023-08-04 jrmu (define (f x) f)
17 12687dd9 2023-08-04 jrmu
18 12687dd9 2023-08-04 jrmu #|
19 12687dd9 2023-08-04 jrmu Exercise 20.1.3. Develop a-function=?. The function determines whether two functions from numbers to numbers produce the same results for 1.2, 3, and -5.7.
20 12687dd9 2023-08-04 jrmu
21 12687dd9 2023-08-04 jrmu Can we hope to define function=?, which determines whether two functions (from numbers to numbers) are equal? Solution
22 12687dd9 2023-08-04 jrmu |#
23 12687dd9 2023-08-04 jrmu
24 12687dd9 2023-08-04 jrmu ;a-function=? (number -> number) (number -> number) (listof ITEM) -> boolean
25 12687dd9 2023-08-04 jrmu ;Determines whether func1 and func2 are equal by evaluating applying the functions to aloi (listof ITEM).
26 12687dd9 2023-08-04 jrmu
27 12687dd9 2023-08-04 jrmu (define (a-function=? func1 func2 aloi)
28 12687dd9 2023-08-04 jrmu (cond
29 12687dd9 2023-08-04 jrmu [(empty? aloi) true]
30 12687dd9 2023-08-04 jrmu [(cons? aloi) (and (equal? (func1 (first aloi))
31 12687dd9 2023-08-04 jrmu (func2 (first aloi)))
32 12687dd9 2023-08-04 jrmu (a-function=? func1 func2 (rest aloi)))]))
33 12687dd9 2023-08-04 jrmu
34 12687dd9 2023-08-04 jrmu (define list1 '(1.2 3 -5.7))
35 12687dd9 2023-08-04 jrmu
36 12687dd9 2023-08-04 jrmu ;function-1: number -> number
37 12687dd9 2023-08-04 jrmu ;Returns 0 (ie, f(x) = 0).
38 12687dd9 2023-08-04 jrmu (define (function-1 x)
39 12687dd9 2023-08-04 jrmu 0)
40 12687dd9 2023-08-04 jrmu
41 12687dd9 2023-08-04 jrmu ;function-2: number -> number
42 12687dd9 2023-08-04 jrmu ;f(x) = (x-1.2)*(x-3)(x+5.7)
43 12687dd9 2023-08-04 jrmu
44 12687dd9 2023-08-04 jrmu (define (function-2 x)
45 12687dd9 2023-08-04 jrmu (* (- x 1.2)
46 12687dd9 2023-08-04 jrmu (- x 3)
47 12687dd9 2023-08-04 jrmu (+ x 5.7)))
48 12687dd9 2023-08-04 jrmu
49 12687dd9 2023-08-04 jrmu ;function-3 : number -> number
50 12687dd9 2023-08-04 jrmu ;f(x) = x.
51 12687dd9 2023-08-04 jrmu
52 12687dd9 2023-08-04 jrmu (define (function-3 x)
53 12687dd9 2023-08-04 jrmu x)
54 12687dd9 2023-08-04 jrmu
55 12687dd9 2023-08-04 jrmu (a-function=? function-1 function-2 list1)
56 12687dd9 2023-08-04 jrmu (not (a-function=? function-1 function-3 list1))
57 12687dd9 2023-08-04 jrmu (not (a-function=? function-2 function-3 list1))
58 12687dd9 2023-08-04 jrmu
59 12687dd9 2023-08-04 jrmu ;sort : (listof numbers) (number number -> boolean) -> (listof numbers)
60 12687dd9 2023-08-04 jrmu
61 12687dd9 2023-08-04 jrmu ;map : (number -> number) (listof numbers) -> (listof numbers)
62 12687dd9 2023-08-04 jrmu
63 12687dd9 2023-08-04 jrmu ;project : (listof (listof symbols)) ((listof symbols) -> symbols) -> symbols