Решение упражнения 2.7 из SICP

18 January, 2008 (21:34) | Решения упражнений

После слегка головоломного упражнения 2.6 (кстати, всем, кто его не делал, рекомендую) в этом упражнении можно расслабиться. Имея определение make-interval, введенное в упражнении

(define (make-interval a b) (cons a b))

и предполагая, что нижняя граница интервала идет первым параметром, а верхняя вторым, мы можем легко записать селекторы таким образом:

(define (lower-bound interval) (car interval))
(define (upper-bound interval) (cdr interval))

Comments

Comment from nobody
Date: July 5, 2008, 11:54 pm

и предполагая, что нижняя граница интервала идет первым параметром, а верхняя вторым

Мы это не предполагаем, это следует из текста процедуры add-interval:

(define (add-interval x y)
(make-interval (+ (lower-bound x) (lower-bound y))
(+ (upper-bound x) (upper-bound y))))

Comment from Vova
Date: April 20, 2016, 9:45 pm

А можно так?

(define (make-interval a b) (cons a b))
(define x cons)
(define y cons)
(define (upper-bound x) (car x))
(define (upper-bound x) (cdr x))
(define (upper-bound y) (car y))
(define (upper-bound y) (cdr y))

Comment from Vova
Date: April 20, 2016, 9:52 pm

А можно так?

(define (make-interval a b) (cons a b))
(define upper-bound cdr) 
(define lower-bound car)
(define x (cons lower-value upper-value))
(define y (cons lower-value upper-value))

Write a comment